1 #ifndef _DYLIB_BNFRDR_H
2 #define _DYLIB_BNFRDR_H
206 #define bnfstore 1<<1
207 #define bnfatsgn 1<<2
213 #define bnfexact 1<<8
214 #define bnfdebug 1<<9
225 # define addrToInt(zz_addr_zz) \
226 ((int) (((char *)(zz_addr_zz)) - ((char *)(0))))
263 #define bnfdef_common bnftype_enum type ; \
459 #define bnfref_common bnftype_enum type ; \
461 bnfdef_struct *defn ; \
523 struct bnfref_type1 *
t1 ;
557 #define NULLP (*((char *) 0))
558 #define mksav(qqoff) (*((char *) qqoff))
559 #define mkoff(qqtype,qqfield) ((size_t) (&((qqtype *) 0)->qqfield))
576 #define althd(qqnme) bnfref_struct **qqnme[]
577 #define altcnt(qqcnt) (bnfref_struct **) (qqcnt)
578 #define mkaref(qqref) (bnfref_struct **) (qqref)
580 #define comphd(qqnme) bnfref_struct *qqnme[]
581 #define compcnt(qqcnt) (bnfref_struct *) (qqcnt)
582 #define mkcref(qqref) (bnfref_struct *) (&qqref)
592 #define gdef(qqnme,qqsze,qqlnk,qqcomps) \
593 bnfGdef_struct qqnme = { bnfG, #qqnme, (int) (qqsze), (int) (qqlnk), \
594 (bnfref_struct **) qqcomps }
596 #define npdef(qqnme,qqalts) \
597 bnfNPdef_struct qqnme = { bnfNP, #qqnme, (bnfref_struct ***) qqalts }
599 #define pdef(qqnme,qqalts) \
600 bnfPdef_struct qqnme = { bnfP, #qqnme, (bnfref_struct ***) qqalts }
602 #define tdef(qqnme,qqttype,qqparm,qqval) \
603 bnfTdef_struct qqnme = { bnfT, #qqnme, qqttype, '\0', '\0', \
604 (int) (qqparm), (const char *) (qqval) }
606 #define tqdef(qqnme,qqschr,qqechr,qqval) \
607 bnfTdef_struct qqnme = { bnfT, #qqnme, bnfttQ, (char) qqschr, (char) qqechr,\
608 0, (char *) (qqval) }
610 #define dfdef(qqnme,qqdflgs,qqnmcd,qqnm,qqsavnm,qqndcd,qqnd,qqsavnd,qqoff) \
611 bnfLBdef_struct qqnme = { bnfDS, #qqnme, (flags) (qqdflgs), qqnmcd, qqndcd, \
612 (int) (qqsavnm), (bnfref_struct *) &qqnm, \
613 (int) (qqsavnd), (bnfref_struct *) &qqnd, \
616 #define dbdef(qqnme,qqdflgs,qqnmcd,qqnm,qqsavnm,qqndcd,qqnd,qqsavnd,qqoff) \
617 bnfLBdef_struct qqnme = { bnfDL, #qqnme, (flags) (qqdflgs), qqnmcd, qqndcd, \
618 (int) (qqsavnm), (bnfref_struct *) &qqnm, \
619 (int) (qqsavnd), (bnfref_struct *) &qqnd, \
622 #define rfdef(qqnme,qqdflgs,qqnmcd,qqnm,qqsavnm,qqoff,qqndcd,qqnd,qqsavnd,qqoff2) \
623 bnfLBdef_struct qqnme = { bnfRS, #qqnme, (flags) (qqdflgs), qqnmcd, qqndcd, \
624 (int) (qqsavnm), (bnfref_struct *) &qqnm, \
625 (int) (qqsavnd), (bnfref_struct *) &qqnd, \
626 (int) (qqoff), (int) (qqoff2) }
628 #define rbdef(qqnme,qqdflgs,qqnmcd,qqnm,qqsavnm,qqoff,qqndcd,qqnd,qqsavnd,qqoff2) \
629 bnfLBdef_struct qqnme = { bnfRL, #qqnme, (flags) (qqdflgs), qqnmcd, qqndcd, \
630 (int) (qqsavnm), (bnfref_struct *) &qqnm, \
631 (int) (qqsavnd), (bnfref_struct *) &qqnd, \
632 (int) (qqoff), (int) (qqoff2) }
634 #define idef(qqnme,qqval) \
635 bnfIdef_struct qqnme = { bnfI, #qqnme, (int) (qqval) }
637 #define ldef(qqnme,qqdflgs,qqtxt) \
638 bnfLdef_struct qqnme = { bnfL, #qqnme, (flags) (qqdflgs), (char *) (qqtxt) }
642 #define gref(qqnme,qqref,qquflgs,qqoff,qqsep) \
643 bnfGref_struct qqnme = { bnfG, #qqnme, (bnfdef_struct *) &qqref, \
644 (flags) (qquflgs), (int) (qqoff), \
645 (bnfref_struct *) &qqsep }
647 #define npref(qqnme,qqref,qquflgs,qqsep) \
648 bnfNPref_struct qqnme = { bnfNP, #qqnme, (bnfdef_struct *) &qqref, \
649 (flags) (qquflgs), (int) 0, (bnfref_struct *) &qqsep }
651 #define pref(qqnme,qqref,qquflgs,qqoff,qqsep) \
652 bnfPref_struct qqnme = { bnfP, #qqnme, (bnfdef_struct *) &qqref, \
653 (flags) (qquflgs), (int) (qqoff), \
654 (bnfref_struct *) &qqsep }
656 #define tref(qqnme,qqref,qquflgs,qqoff) \
657 bnfTref_struct qqnme = { bnfT, #qqnme, (bnfdef_struct *) &qqref, \
658 (flags) qquflgs, (int) qqoff }
660 #define dfref(qqnme,qqref) \
661 bnfLBref_struct qqnme = { bnfDS, #qqnme, (bnfdef_struct *) &qqref, (flags) 0 }
663 #define dbref(qqnme,qqref) \
664 bnfLBref_struct qqnme = { bnfDL, #qqnme, (bnfdef_struct *) &qqref, (flags) 0 }
666 #define rfref(qqnme,qqref) \
667 bnfLBref_struct qqnme = { bnfRS, #qqnme, (bnfdef_struct *) &qqref, (flags) 0 }
669 #define rbref(qqnme,qqref) \
670 bnfLBref_struct qqnme = { bnfRL, #qqnme, (bnfdef_struct *) &qqref, (flags) 0 }
672 #define iref(qqnme,qqref,qqoff) \
673 bnfIref_struct qqnme = { bnfI, #qqnme, (bnfdef_struct *) &qqref, \
674 (flags) 0, (int) qqoff }
676 #define lref(qqnme,qqref) \
677 bnfLref_struct qqnme = { bnfL, #qqnme, (bnfdef_struct *) &qqref, (flags) 0 }
687 #define dfrefdbg(qqnme,qqref) \
688 bnfLBref_struct qqnme = { bnfDS, #qqnme, (bnfdef_struct *) &qqref, \
691 #define dbrefdbg(qqnme,qqref) \
692 bnfLBref_struct qqnme = { bnfDL, #qqnme, (bnfdef_struct *) &qqref, \
695 #define rfrefdbg(qqnme,qqref) \
696 bnfLBref_struct qqnme = { bnfRS, #qqnme, (bnfdef_struct *) &qqref, \
699 #define rbrefdbg(qqnme,qqref) \
700 bnfLBref_struct qqnme = { bnfRL, #qqnme, (bnfdef_struct *) &qqref, \
703 #define lrefdbg(qqnme,qqref) \
704 bnfLref_struct qqnme = { bnfL, #qqnme, (bnfdef_struct *) &qqref, \
718 typedef union {
void *
g ;
730 extern void bnfdbgctl(
ioid dbgchn,
bool dbgecho,
bool warnzlbl,
bool numlvl,
733 #define bnfdbgctl(dgbchn,dbgecho,warnzlbl,numlvl,tablvl)
struct bnfref_struct_tag bnfref_struct
void prtbnfref(ioid chn, bool echo, bnfref_struct *ref)
bnfref_struct bnfLref_struct
struct bnfref_struct_tag * nmsrc
bnfdef_common flags dflgs
struct bnfref_struct_tag * ndsrc
struct bnfref_struct_tag ** comps
void bnfdbgctl(ioid dbgchn, bool dbgecho, bool warnzlbl, bool numlvl, bool tablvl)
bnfdef_common flags dflgs
bnfref_struct bnfLBref_struct
bnfdef_common struct bnfref_struct_tag *** alts
bnfNPdef_struct bnfPdef_struct
bool parse(ioid chn, struct bnfref_type3 *bnfid, parse_any *result)
bnfdef_common bnfttype_enum ttype
void prtbnfdef(ioid chn, bool echo, bnfdef_struct *def)