Пример #1
0
static int ruleList(int symbolIndex){
	int length;
	int result;

	assert(nRULES < MAX_RULES);
	RULENAME[nRULES] = symbolIndex;


	result = termList();
	nRULES += 1;

	if(result){
		return result;
	}

	if(TOKENNAME[tokenIndex] == TOKNAME_PIPE){
		tokenIndex++;
		result = ruleList(symbolIndex);
		if(result){
			return result;
		}
		return 0;
	} else {
		return 0;
	}
}
Пример #2
0
void datalogProgram ::ruleList(){
    if (tokens.at(vecIndex).getTokenType() == ID && tokens.at(vecIndex + 2).getTokenType() == ID){
        Rule();
        ruleList();
    }
    else if (tokens.at(vecIndex).getTokenType() == QUERIES){}
    else{
        if (currentStatus == true){
            currentStatus = false;
            falseTok = tokens.at(vecIndex);
        }
    }
}
void
JXComposeRuleList::BuildHelp
	(
	JString* text
	)
	const
{
	JArray<Rule> ruleList(*itsRuleList);
	ruleList.SetCompareFunction(CompareForHelp);
	ruleList.Sort();

	*text = JGetString(kComposeHelpPrefixID);

	const JSize ruleCount = ruleList.GetElementCount();
	for (JIndex i=1; i<=ruleCount; i++)
		{
		const Rule r = ruleList.GetElement(i);

		*text += "<tr><td>";
		text->AppendCharacter(r.GetOutputCharacter());
		*text += "</td><td>";

		const JSize keyCount = (r.inputSeq)->GetElementCount();
		for (JIndex j=1; j<=keyCount; j++)
			{
			*text += XKeysymToString((r.inputSeq)->GetElement(j));
			text->AppendCharacter(' ');
			}

		*text += "</td></tr>";
		}

	*text +=
		"</table>"
		"</body>"
		"</html>";
}
Пример #4
0
static int ruleSet(){
	int result;
	int symbolIndex;

	if(TOKENNAME[tokenIndex] == TOKNAME_NONTERMINAL){
		symbolIndex = TOKENVALUE[tokenIndex];
		tokenIndex++;

		if(TOKENNAME[tokenIndex] == TOKNAME_COLON){
			tokenIndex++;
			result = ruleList(symbolIndex);
			if(result){
				return result;
			}

			if(TOKENNAME[tokenIndex] == TOKNAME_SEMICOLON){
				tokenIndex++;

				if(TOKENNAME[tokenIndex] == TOKNAME_NONTERMINAL){
					return ruleSet();
				} else {
					return 0;
				}
			} else {
				parserErrorNumber = PARSERR_EXPECTED_SEMICOLON;
				return -1;
			}

		} else {
			parserErrorNumber = PARSERR_EXPECTED_COLON;
			return -1;
		}
	} else {
		parserErrorNumber = PARSERR_EXPECTED_NONTERMINAL;
		return -1;
	}
}
Пример #5
0
void datalogProgram :: datalogProg(){
    if (tokens.at(vecIndex).getTokenType() == SCHEMES){
        match(SCHEMES);
        match(COLON);
        scheme();
        schemeList();
        match(FACTS);
        match(COLON);
        factList();
        match(RULES);
        match(COLON);
        ruleList();
        match(QUERIES);
        match(COLON);
        query();
        queryList();
    }
    else{
        if (currentStatus == true){
            currentStatus = false;
            falseTok = tokens.at(vecIndex);
        }
    }
}