module ddparser.dparse; import ddparser.dparse_tables; import ddparser.symtab; import ddparser.parse; alias d_voidp = void *; alias D_ParseNode_User = d_voidp; alias D_ParseNode_Globals = void; alias D_SyntaxErrorFn = void function(D_Parser *); alias D_AmbiguityFn = D_ParseNode * function(D_Parser *, int n, D_ParseNode **v); alias D_FreeNodeFn = void function(D_ParseNode *d); struct D_ParseNode { int symbol; d_loc_t start_loc; const(char) *end; const(char) *end_skip; D_Scope *scope_; D_WhiteSpaceFn white_space; D_ParseNode_Globals *globals; D_ParseNode_User user; @property string matchedString() const { assert(end, "End is null"); return start_loc.s[0 .. end - start_loc.s].idup; } }