コード例 #1
0
static ATerm parse(const unsigned char *inputString, unsigned int inputStringLength, const char *inputPath, const char *parseTableName){
	PT_ParseTree parseTree;
	InputString sglrInputString;
	
	ERR_resetErrorManager();
	
	sglrInputString = IS_allocateString(inputPath, inputString, inputStringLength);
	
	if(inputString == NULL){
		return ERR_SummaryToTerm(ERR_getManagerSummary());
	}
	
	if(!SGLR_isParseTableLoaded(parseTableName)){
		if(SG_AddParseTable(parseTableName) == NULL){
			return ERR_SummaryToTerm(ERR_getManagerSummary());
		}
	}
	
	parseTree = SGLR_parse(sglrInputString, parseTableName);
	
	if(parseTree == NULL){
		return ERR_SummaryToTerm(ERR_getManagerSummary());
	}
	
	return PT_ParseTreeToTerm(parseTree);
}
コード例 #2
0
static PT_ParseTree parsetreeFromTextFile(const char *filename) {
  PT_ParseTree parseResult = NULL;
  InputString inputString;
  
  FLT_setInjectionCountFlag(ATfalse);
  FLT_setPreferenceCountFlag(ATfalse);

  if (loadParseTable()) {
    inputString = IS_createInputStringFromFile(filename);
    parseResult = SGLR_parse(inputString, getParseTableID());
  }
  else {
    ATerror("asc-main: parse table not loaded.");
  }

  if (parseResult != NULL) {
    return parseResult;
  }
  else {
    ATerror("asc-main: unknown error while parsing %s\n", filename);
    exit(1);
  }
  
  return NULL;
}