- Our Tool:
SymbolicPatchFile.apply(file, 'def $METHOD', 'def new_$METHOD') - AST-GREP:
ast-grep run --pattern 'def $METHOD' --rewrite 'def new_$METHOD' file.rb - Status: ✅ Fully supported
- Our Tool:
SymbolicPatchFile.apply(file, 'kind: method', nil) - AST-GREP:
ast-grep run --pattern 'kind: method' file.rb - Status: ✅ Fully supported
- Our Tool:
SymbolicPatchFile.apply(file, 'all: [pattern: def $METHOD, has: { kind: identifier }]', nil) - AST-GREP: Supports complex composite rules
- Status: ✅ Basic support working
- Our Tool: Attempts
pattern: def $METHOD inside: { kind: class }but fails - AST-GREP: Full support for
inside,has,precedes,follows - Status:
⚠️ Syntax supported but YAML structure required
- Our Tool: Attempts
def $METHOD regex: ^method[0-9]+but fails - AST-GREP: Full meta variable constraint support
- Status:
⚠️ Syntax supported but requires proper YAML rule structure
- Our Tool: No direct support for utility rule composition
- AST-GREP: Full
utilsandmatchessupport - Status:
⚠️ Not yet implemented
- Complex Rule Composition:
any,not, complexallcombinations - Field-based Matching: Semantic role matching with
field - Stop-by Constraints: Advanced relational search boundaries
- Utility Rule Reuse: Modular rule composition
- Cross-file Patterns: Patterns that span multiple files
- Project-wide Rules: Rules that apply to entire codebases
- Dependency-aware Transformations: Transformations that understand file relationships
- Context-aware Patterns: Patterns with surrounding context
- Selector-based Extraction: Extracting sub-parts of patterns
- Range-based Matching: Character/line range constraints
- Basic AST-GREP Integration: Our tool successfully integrates with ast-grep for basic pattern matching and rewriting
- Simple Pattern Syntax: Direct pattern strings work correctly
- Language Detection: Automatic language detection is functional
- Hermetic Execution Domain: Error handling and execution isolation work well
- YAML Rule Structure: Our tool passes patterns as strings, but ast-grep expects proper YAML rule files for advanced features
- Pattern Syntax Mismatch: Some advanced patterns fail because they require YAML structure rather than string patterns
- Utility Rule Support: No support for ast-grep's modular rule composition system
- Complex Constraints: Advanced relational and regex constraints require proper YAML configuration
- YAML Rule Support: Add support for parsing and applying YAML rule files
- Inline Rule Support: Support ast-grep's
--inline-rulesparameter for complex patterns - Advanced Pattern Builder: Create a DSL for building complex ast-grep rules programmatically
- Utility Rule Integration: Support ast-grep's utility rule system for modular patterns
- Multi-file Operations: Extend support for cross-file transformations
- Constraint System: Implement meta variable constraints and relational boundaries
- Project Configuration: Support ast-grep project configuration files
- Advanced Language Features: Support language-specific pattern enhancements
- Performance Optimizations: Optimize for large codebases
- Add
apply_yaml_rule(file_path, yaml_rule)method - Support
--inline-rulesparameter for complex patterns - Create YAML rule builder DSL
- Implement constraint system for meta variables
- Add relational rule support with proper YAML structure
- Support utility rule composition
- Extend to multi-file operations
- Add project configuration support
- Implement dependency-aware transformations
Our symbolic patch tool successfully embraces the core capabilities of ast-grep for basic pattern matching and transformation. However, to fully embrace all possibilities of ast-grep, we need to add support for:
- YAML Rule Structure - Essential for advanced features
- Utility Rule System - For modular pattern composition
- Complex Constraints - Relational and regex constraints
Current Coverage: ~60% of ast-grep's capabilities Target Coverage: 95%+ with recommended enhancements
The foundation is solid - we have proper ast-grep integration and hermetic execution. The missing pieces are primarily around supporting ast-grep's advanced YAML-based rule system.