Files
langkit/lkt/bootstrap/gdbinit.py
2026-02-12 11:48:42 +00:00

30 lines
8.6 KiB
Python

"""
This script is meant to be sourced inside GDB when debugging a program that
uses liblktlang. It installs Langkit's "GDB helpers": pretty-printers and
custom commands that are convenient when debugging liblktlang. Note that GDB
helpers require the Langkit Python library.
"""
import sys
try:
import langkit.gdb
except ImportError as exc:
print(
f"{__file__}: Cannot import the 'langkit.gdb' Python package: langkit"
" GDB helpers require it",
file=sys.stderr,
)
else:
langkit.gdb.setup(
lib_name='liblktlang',
astnode_names=['Lkt_Node', 'Argument', 'Base_Import', 'Import', 'Import_All_From', 'Import_From', 'Base_Lexer_Case_Rule_Alt', 'Error_Lexer_Case_Rule_Alt', 'Lexer_Case_Rule_Cond_Alt', 'Lexer_Case_Rule_Default_Alt', 'Base_Match_Branch', 'Match_Branch', 'Pattern_Match_Branch', 'Block_Expr_Clause', 'Block_String_Line', 'Class_Qualifier', 'Class_Qualifier_Absent', 'Class_Qualifier_Present', 'Decl', 'Base_Grammar_Rule_Decl', 'Grammar_Rule_Decl', 'Synthetic_Lexer_Decl', 'Base_Val_Decl', 'Node_Decl', 'Self_Decl', 'User_Val_Decl', 'Binding_Val_Decl', 'Enum_Lit_Decl', 'Explicitly_Typed_Decl', 'Component_Decl', 'Field_Decl', 'Fun_Param_Decl', 'Lambda_Param_Decl', 'Dyn_Var_Decl', 'Match_Val_Decl', 'Val_Decl', 'Fun_Decl', 'Env_Spec_Decl', 'Error_Decl', 'Generic_Decl', 'Grammar_Decl', 'Langkit_Root', 'Lexer_Decl', 'Lexer_Family_Decl', 'Synth_Fun_Decl', 'Synth_Param_Decl', 'Type_Decl', 'Any_Type_Decl', 'Enum_Class_Alt_Decl', 'Function_Type', 'Generic_Param_Type_Decl', 'Named_Type_Decl', 'Basic_Class_Decl', 'Class_Decl', 'Enum_Class_Decl', 'Enum_Type_Decl', 'Struct_Decl', 'Trait_Decl', 'Decl_Annotation', 'Decl_Annotation_Args', 'Dyn_Env_Wrapper', 'Elsif_Branch', 'Enum_Class_Case', 'Excludes_Null', 'Excludes_Null_Absent', 'Excludes_Null_Present', 'Expr', 'Any_Of', 'Array_Literal', 'Base_Call_Expr', 'Call_Expr', 'Logic_Call_Expr', 'Logic_Predicate', 'Logic_Propagate_Call', 'Bin_Op', 'Block_Expr', 'Cast_Expr', 'Dot_Expr', 'Error_On_Null', 'Generic_Instantiation', 'Grammar_Expr', 'Error_Grammar_Expr', 'Grammar_Cut', 'Grammar_Discard', 'Grammar_Dont_Skip', 'Grammar_List', 'Grammar_Null', 'Grammar_Opt', 'Grammar_Opt_Error', 'Grammar_Opt_Error_Group', 'Grammar_Opt_Group', 'Grammar_Or_Expr', 'Grammar_Pick', 'Grammar_Implicit_Pick', 'Grammar_Predicate', 'Grammar_Rule_Ref', 'Grammar_Skip', 'Grammar_Stop_Cut', 'Parse_Node_Expr', 'Token_Lit', 'Token_No_Case_Lit', 'Token_Pattern_Concat', 'Token_Pattern_Lit', 'Token_Ref', 'Id', 'Def_Id', 'Imported_Id', 'Module_Id', 'Ref_Id', 'If_Expr', 'Isa', 'Keep_Expr', 'Lambda_Expr', 'Lit', 'Big_Num_Lit', 'Char_Lit', 'Null_Lit', 'Num_Lit', 'String_Lit', 'Block_String_Lit', 'Module_Doc_String_Lit', 'Single_Line_String_Lit', 'Pattern_Single_Line_String_Lit', 'Logic_Assign', 'Logic_Expr', 'Logic_Propagate', 'Logic_Unify', 'Match_Expr', 'Not_Expr', 'Paren_Expr', 'Query', 'Raise_Expr', 'Subscript_Expr', 'Try_Expr', 'Un_Op', 'Full_Decl', 'Grammar_List_Sep', 'Imported_Name', 'Lexer_Case_Rule', 'Lexer_Case_Rule_Send', 'List_Kind', 'List_Kind_One', 'List_Kind_Zero', 'Lkt_Node_Base_List', 'Argument_List', 'Base_Import_List', 'Base_Lexer_Case_Rule_Alt_List', 'Base_Match_Branch_List', 'Block_String_Line_List', 'Call_Expr_List', 'Decl_Annotation_List', 'Elsif_Branch_List', 'Enum_Class_Alt_Decl_List', 'Enum_Class_Case_List', 'Enum_Lit_Decl_List', 'Expr_List', 'Any_Of_List', 'Full_Decl_List', 'Decl_Block', 'Generic_Param_Decl_List', 'Fun_Param_Decl_List', 'Grammar_Expr_List', 'Grammar_Expr_List_List', 'Imported_Name_List', 'Lambda_Param_Decl_List', 'Lkt_Node_List', 'Module_Doc_String_Line_List', 'Pattern_Detail_List', 'Pattern_List', 'Ref_Id_List', 'Type_Ref_List', 'Synthetic_Type_Ref_List', 'Module_Doc_String_Line', 'Null_Cond_Qualifier', 'Null_Cond_Qualifier_Absent', 'Null_Cond_Qualifier_Present', 'Op', 'Op_Amp', 'Op_And', 'Op_Div', 'Op_Eq', 'Op_Gt', 'Op_Gte', 'Op_Logic_And', 'Op_Logic_Or', 'Op_Lt', 'Op_Lte', 'Op_Minus', 'Op_Mult', 'Op_Ne', 'Op_Or', 'Op_Or_Int', 'Op_Plus', 'Op_Stream_Concat', 'Op_Stream_Cons', 'Pattern', 'Any_Type_Pattern', 'Bool_Pattern', 'Bool_Pattern_False', 'Bool_Pattern_True', 'Complex_Pattern', 'Renaming_Complex_Pattern', 'Ellipsis_Pattern', 'Integer_Pattern', 'List_Pattern', 'Not_Pattern', 'Null_Pattern', 'Or_Pattern', 'Paren_Pattern', 'Regex_Pattern', 'Type_Pattern', 'Pattern_Detail', 'Field_Pattern_Detail', 'Property_Pattern_Detail', 'Type_Ref', 'Default_List_Type_Ref', 'Function_Type_Ref', 'Generic_Type_Ref', 'Simple_Type_Ref', 'Var_Bind'],
astnode_kinds={1: 'Argument', 2: 'Import', 3: 'Import_All_From', 4: 'Import_From', 5: 'Error_Lexer_Case_Rule_Alt', 6: 'Lexer_Case_Rule_Cond_Alt', 7: 'Lexer_Case_Rule_Default_Alt', 8: 'Match_Branch', 9: 'Pattern_Match_Branch', 10: 'Block_Expr_Clause', 11: 'Block_String_Line', 12: 'Class_Qualifier_Absent', 13: 'Class_Qualifier_Present', 14: 'Grammar_Rule_Decl', 15: 'Synthetic_Lexer_Decl', 16: 'Node_Decl', 17: 'Self_Decl', 18: 'Binding_Val_Decl', 19: 'Enum_Lit_Decl', 20: 'Field_Decl', 21: 'Fun_Param_Decl', 22: 'Lambda_Param_Decl', 23: 'Dyn_Var_Decl', 24: 'Match_Val_Decl', 25: 'Val_Decl', 26: 'Fun_Decl', 27: 'Env_Spec_Decl', 28: 'Error_Decl', 29: 'Generic_Decl', 30: 'Grammar_Decl', 31: 'Langkit_Root', 32: 'Lexer_Decl', 33: 'Lexer_Family_Decl', 34: 'Synth_Fun_Decl', 35: 'Synth_Param_Decl', 36: 'Any_Type_Decl', 37: 'Enum_Class_Alt_Decl', 38: 'Function_Type', 39: 'Generic_Param_Type_Decl', 40: 'Class_Decl', 41: 'Enum_Class_Decl', 42: 'Enum_Type_Decl', 43: 'Struct_Decl', 44: 'Trait_Decl', 45: 'Decl_Annotation', 46: 'Decl_Annotation_Args', 47: 'Dyn_Env_Wrapper', 48: 'Elsif_Branch', 49: 'Enum_Class_Case', 50: 'Excludes_Null_Absent', 51: 'Excludes_Null_Present', 52: 'Any_Of', 53: 'Array_Literal', 54: 'Call_Expr', 55: 'Logic_Predicate', 56: 'Logic_Propagate_Call', 57: 'Bin_Op', 58: 'Block_Expr', 59: 'Cast_Expr', 60: 'Dot_Expr', 61: 'Error_On_Null', 62: 'Generic_Instantiation', 63: 'Error_Grammar_Expr', 64: 'Grammar_Cut', 65: 'Grammar_Discard', 66: 'Grammar_Dont_Skip', 67: 'Grammar_List', 68: 'Grammar_Null', 69: 'Grammar_Opt', 70: 'Grammar_Opt_Error', 71: 'Grammar_Opt_Error_Group', 72: 'Grammar_Opt_Group', 73: 'Grammar_Or_Expr', 74: 'Grammar_Pick', 75: 'Grammar_Implicit_Pick', 76: 'Grammar_Predicate', 77: 'Grammar_Rule_Ref', 78: 'Grammar_Skip', 79: 'Grammar_Stop_Cut', 80: 'Parse_Node_Expr', 81: 'Token_Lit', 82: 'Token_No_Case_Lit', 83: 'Token_Pattern_Concat', 84: 'Token_Pattern_Lit', 85: 'Token_Ref', 86: 'Id', 87: 'Def_Id', 88: 'Imported_Id', 89: 'Module_Id', 90: 'Ref_Id', 91: 'If_Expr', 92: 'Isa', 93: 'Keep_Expr', 94: 'Lambda_Expr', 95: 'Big_Num_Lit', 96: 'Char_Lit', 97: 'Null_Lit', 98: 'Num_Lit', 99: 'Block_String_Lit', 100: 'Module_Doc_String_Lit', 101: 'Single_Line_String_Lit', 102: 'Pattern_Single_Line_String_Lit', 103: 'Logic_Assign', 104: 'Logic_Expr', 105: 'Logic_Propagate', 106: 'Logic_Unify', 107: 'Match_Expr', 108: 'Not_Expr', 109: 'Paren_Expr', 110: 'Query', 111: 'Raise_Expr', 112: 'Subscript_Expr', 113: 'Try_Expr', 114: 'Un_Op', 115: 'Full_Decl', 116: 'Grammar_List_Sep', 117: 'Imported_Name', 118: 'Lexer_Case_Rule', 119: 'Lexer_Case_Rule_Send', 120: 'List_Kind_One', 121: 'List_Kind_Zero', 122: 'Argument_List', 123: 'Base_Import_List', 124: 'Base_Lexer_Case_Rule_Alt_List', 125: 'Base_Match_Branch_List', 126: 'Block_String_Line_List', 127: 'Call_Expr_List', 128: 'Decl_Annotation_List', 129: 'Elsif_Branch_List', 130: 'Enum_Class_Alt_Decl_List', 131: 'Enum_Class_Case_List', 132: 'Enum_Lit_Decl_List', 133: 'Expr_List', 134: 'Any_Of_List', 135: 'Full_Decl_List', 136: 'Decl_Block', 137: 'Generic_Param_Decl_List', 138: 'Fun_Param_Decl_List', 139: 'Grammar_Expr_List', 140: 'Grammar_Expr_List_List', 141: 'Imported_Name_List', 142: 'Lambda_Param_Decl_List', 143: 'Lkt_Node_List', 144: 'Module_Doc_String_Line_List', 145: 'Pattern_Detail_List', 146: 'Pattern_List', 147: 'Ref_Id_List', 148: 'Type_Ref_List', 149: 'Synthetic_Type_Ref_List', 150: 'Module_Doc_String_Line', 151: 'Null_Cond_Qualifier_Absent', 152: 'Null_Cond_Qualifier_Present', 153: 'Op_Amp', 154: 'Op_And', 155: 'Op_Div', 156: 'Op_Eq', 157: 'Op_Gt', 158: 'Op_Gte', 159: 'Op_Logic_And', 160: 'Op_Logic_Or', 161: 'Op_Lt', 162: 'Op_Lte', 163: 'Op_Minus', 164: 'Op_Mult', 165: 'Op_Ne', 166: 'Op_Or', 167: 'Op_Or_Int', 168: 'Op_Plus', 169: 'Op_Stream_Concat', 170: 'Op_Stream_Cons', 171: 'Any_Type_Pattern', 172: 'Bool_Pattern_False', 173: 'Bool_Pattern_True', 174: 'Complex_Pattern', 175: 'Renaming_Complex_Pattern', 176: 'Ellipsis_Pattern', 177: 'Integer_Pattern', 178: 'List_Pattern', 179: 'Not_Pattern', 180: 'Null_Pattern', 181: 'Or_Pattern', 182: 'Paren_Pattern', 183: 'Regex_Pattern', 184: 'Type_Pattern', 185: 'Field_Pattern_Detail', 186: 'Property_Pattern_Detail', 187: 'Default_List_Type_Ref', 188: 'Function_Type_Ref', 189: 'Generic_Type_Ref', 190: 'Simple_Type_Ref', 191: 'Var_Bind'},
prefix='lkt'
)