Skip to content

Conversation

@likivisw
Copy link
Contributor

@likivisw likivisw commented Dec 8, 2025

v0.5.1 - Two-Stage Parsing System

Two-Stage Parsing Approach

  1. Alpha Parser (α) - Always runs first; resilient parser using heuristics for incomplete dependencies
  2. Beta Parser (β) - Runs only if no fatal/semantic/syntax errors; requires complete semantic resolution

Parsing Strategy

  • Alpha runs on both versions first
  • If fatal errors occur: Reports Alpha results only
  • If no errors: Proceeds to Beta, reports combined Alpha + Beta results

Dependency Resolution

Non-recursive upward traversal from current directory to project root (does not search subdirectories).

Alpha Parser (α)

Strengths: Works with missing dependencies, valid syntax required, applies heuristics for unresolved symbols

Detects:

  • Struct/union/enum: member changes, qualifier changes, tag renames
  • Functions: signature changes, parameter/return qualifiers, storage/linkage (with heuristics for unresolved types)
  • Variables/fields: qualifiers, storage, pointer indirection, array dimensions (with heuristics for unresolved types)

Limitations: No function overloading, typedefs, forward declarations, anonymous types, preprocessor directives, C++ OOP features

Beta Parser (β)

Strengths: Complete semantic resolution, handles arbitrary type complexity

Detects: Everything Alpha detects, plus:

  • Forward declarations (functions, structs, unions, enums)
  • Typedefs with semantic-aware comparison
  • Function overloading
  • Anonymous/nested types
  • Flexible array members
  • Complex type compositions (unlimited nesting)

Limitations: Same as Alpha for implementation details, preprocessor directives, ABI changes, C++ features

Quick Comparison

Feature Alpha (α) Beta (β)
Dependencies Optional Required
Forward Declarations
Typedefs
Function Overloading
Anonymous Types
Type Semantics Full (when resolved) Full (always)

…ts**

The previous AST‑normalization, diff engine, and reporting code (including all related headers, source files, and functional test suites) has been deleted. The project no longer uses the old `ast_normalizer` infrastructure, so the corresponding files and test cases were removed to simplify the codebase. The CMake configuration and `pytest.ini` were updated to reflect the new layout. This cleanup reduces maintenance overhead and prepares the repository for the new implementation.

Signed-off-by: likith viswanath <likivisw@qti.qualcomm.com>
These empty package initializers are no longer needed; the test suite now relies on Python’s implicit namespace packages, simplifying the project structure.

Signed-off-by: likith viswanath <likivisw@qti.qualcomm.com>
Signed-off-by: likith viswanath <likivisw@qti.qualcomm.com>
Signed-off-by: likith viswanath <likivisw@qti.qualcomm.com>
Signed-off-by: likith viswanath <likivisw@qti.qualcomm.com>
Signed-off-by: likith viswanath <likivisw@qti.qualcomm.com>
Signed-off-by: likith viswanath <likivisw@qti.qualcomm.com>
Signed-off-by: likith viswanath <likivisw@qti.qualcomm.com>
@likivisw likivisw closed this Dec 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant