void STRSGLR_ensure_init(void) { ATerm foo; static ATbool STRSGLR_init = ATfalse; if(STRSGLR_init) return; STRSGLR_init = ATtrue; ATregisterBlobDestructor(parse_table_blob_destructor); PT_initMEPTApi(); PT_initAsFix2Api(); initErrorApi(); SG_TOOLBUS_OFF(); SG_OUTPUT_ON(); foo = STRSGLR_set_default_config(); none_term = (ATerm) ATmakeAppl(ATmakeAFun("None", 0, ATfalse)); active_parse_tables = ATmakeList(0); inactive_parse_tables = malloc(sizeof(ATerm*) * MAX_INACTIVE_PARSE_TABLES); num_inactive_parse_tables = 0; ATprotect(&none_term); ATprotect(&parse_error_term); ATprotectList(&active_parse_tables); }
ATbool set_global_options(void) { if(debugflag) SG_DEBUG_ON(); if(verboseflag) SG_VERBOSE_ON(); if(filterflag) SG_FILTER_ON(); if(filter_associativityflag) SG_FILTER_ASSOCIATIVITY_ON(); if(filter_directeagernessflag) SG_FILTER_DIRECTEAGERNESS_ON(); if(filter_eagernessflag) SG_FILTER_EAGERNESS_ON(); if(filter_injectioncountflag) SG_FILTER_INJECTIONCOUNT_ON(); if(filter_priorityflag) SG_FILTER_PRIORITY_ON(); if(filter_rejectflag) SG_FILTER_REJECT_ON(); if(cycleflag) SG_CYCLE_ON(); if(start_symbol) SG_STARTSYMBOL_ON(); if(statisticsflag) SG_SHOWSTAT_ON(); if(outputflag) SG_OUTPUT_ON(); if(asfix2meflag) SG_ASFIX2ME_ON(); if(binaryflag) SG_BINARY_ON(); if(ambiguityerrorflag) SG_AMBIGUITY_ERROR_ON(); if(!parse_table_name) { SG_DEBUG_OFF(); SG_SHOWSTAT_OFF(); } if(SG_STATISTICS) { SG_OpenLog(program_name, SG_DEBUG?".sglr-log":"sglr-stats.txt"); } /* Return whether a possibly runnable instantiation has been obtained... */ if(parse_table_name) { return ATtrue; } else { return ATfalse; } }