Flow-Based Scoping for Variable Accessibility and Error Prevention

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current programming languages face challenges in accurately determining the scope of variables, particularly in dynamic and lexical scoping, leading to issues with variable accessibility and error handling across different code segments and scopes.

Innovation Solution

The implementation of flow-based scoping, where a code segment encapsulates a lower-level lexical scope, initializing variables only when a condition is satisfied, and ensuring they are available within that scope, while preventing access from outside scopes, thereby preventing runtime errors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If dynamic scoping is used to allow variable access across function calls, then variable accessibility is improved, but scope determination complexity and runtime errors increase

Engineering Contradiction:
Improvevariable accessibilityVSAvoidscope determination complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the code into hierarchical scopes (outer scope, inner scope, called function scope) with clear boundaries. Each scope is independently analyzed and variables are tracked within their specific scope segments, preventing cross-scope confusion while maintaining necessary accessibility within each segment.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary scope analysis during compilation by constructing scope graphs and determining variable scopes before runtime execution. This advance preparation establishes clear variable accessibility rules, eliminating the need for complex runtime scope determination and reducing runtime errors.

Inventive Principle:
Principle #10Preliminary action

2Device complexity

If lexical scoping is used to restrict variable scope to declaration region, then scope determination simplicity is improved, but variable accessibility across code segments is reduced

Engineering Contradiction:
Improvescope determination simplicityVSAvoidvariable accessibility
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent implements nested scopes where an inner scope can access variables from outer scopes through hierarchical nesting. The called function scope is nested within the outer scope structure, allowing controlled access to outer scope variables while maintaining clear scope boundaries and simple determination rules.

Inventive Principle:
Principle #7Nested doll (Nesting)

Solution Approach 2:

The patent adds a temporal dimension to scope by introducing scope validity periods (when variables are in scope based on execution flow). This allows variables to be accessible across code segments at different execution points without compromising scope determination simplicity, as the scope graph tracks variable availability through different execution paths.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Adaptability or versatility

If variables are declared with broad scope to ensure accessibility, then variable accessibility is improved, but risk of runtime errors and scope conflicts increases

Engineering Contradiction:
Improvevariable accessibilityVSAvoidruntime error prevention
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent applies different scope characteristics to different variables based on their specific usage requirements. Each variable is analyzed to determine its precise scope needs, and scope restrictions are applied locally to each variable rather than using a blanket broad scope approach. This prevents scope conflicts while maintaining necessary accessibility for each specific variable.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent replaces runtime scope resolution mechanics with compile-time scope analysis. By constructing scope graphs and determining variable scopes during compilation, the system eliminates runtime scope conflicts and errors, ensuring reliability while maintaining variable accessibility through pre-established scope rules.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

4Measurement precision

If scope analysis is performed at runtime to ensure correct variable access, then variable accessibility accuracy is improved, but execution performance decreases

Engineering Contradiction:
Improvevariable scope accuracyVSAvoidexecution performance
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent performs scope analysis as a preliminary action during compilation by constructing scope graphs and determining variable scopes before runtime. This advance analysis stores scope information in a structured format that enables fast runtime variable access without requiring complex scope resolution during execution, thus maintaining both accuracy and performance.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentEP3607432B1Flow-based scoping
Publication Date: 2023.04.05 ORACLE INT CORP
  • EP3607432B1 patent drawingFigure 1
  • EP3607432B1 patent drawingFigure 2
  • EP3607432B1 patent drawingFigure 3

AI summary

Techniques for flow-based scoping are disclosed. A first code segment in a sequence of same-level code segments encapsulates a first lower-level lexical scope. The first lower-level scope is inclusive of scoping provided for the sequence of same-level code segments. The first code segment comprises a condition and an uninitialized variable. If executed, the first code segment causes the condition to be evaluated. If the condition is satisfied, the uninitialized variable is initialized and made available only within the first lower-level lexical scope. If a second code segment (a) references the uninitialized variable and (b) is in the sequence of same-level code segments or in a second lower-level lexical scope outside of the first lower-level lexical scope, an error message is presented indicating that the uninitialized variable is out of scope for the second code segment.