Exemplo n.º 1
0
int parseList(token *tok, char **s)
{
	int firstLine, lastLine;
	int line;
	int print = 0;
	char *prog;

	firstLine = lastLine = 0;

	if (matchList(tok, s))
	{
		matchWhiteSpace(tok, s);
		if (matchNumber(tok, s))
		{
			firstLine = lastLine = tok->n;

			matchWhiteSpace(tok, s);
			if (matchComma(&testToken, s))
			{
				matchWhiteSpace(tok, s);
				if (matchNumber(tok, s))
					lastLine = tok->n;
				else return 0;
			}
		}

		prog = programGetProgram();
		if (!prog)
		{
			errorSet(ERROR_OUT_OF_MEMORY);
			return 0;
		}

		while (*prog)
		{
			line = atoi(prog);

			if (lastLine && (line > lastLine)) break;

			if (line >= firstLine) print = 1;

			do
			{
				if (print) putchar(*prog);
				++prog;
			} while (*prog != '\n');
			if (print) putchar(*prog);

			++prog;
		}

		return 1;
	}

	return 0;
}
Exemplo n.º 2
0
int parseCommand(token *tok, char **s)
{
	int line;
	int r;

	if (matchNumber(tok, s))
	{
		line = tok->n;
		if (!matchWhiteSpace(tok, s)) // delete line
			return deleteLine(line);
		else	// add line
		{
			matchString(tok, s);
			return insertLine(line, tok->s);
		}
	}

	if (matchSize(tok, s))
	{
		puts(itos(programGetSize()));
		return 1;
	}

	if (matchFree(tok, s))
	{
		puts(itos(programGetFree()));
		return 1;
	}

  if (matchClear(tok, s))
	{
		programInit();
		return 1;
	}

	if (matchBye(tok, s))
	{
		exit(0);
	}

	if (parseRun(tok, s))
		return 1;
	else if (errorGet() != ERROR_OK) return 0;

	if (parseList(tok, s))
		return 1;
	else if (errorGet() != ERROR_OK) return 0;

	programSetMode(progModeImmediate);
	r = parseLine(tok, s);
	programSetMode(progModeStored);

	return r;
}
Exemplo n.º 3
0
int parseRun(token *tok, char **s)
{
	int line = 0;

	if (matchRun(tok, s))
	{
		if (matchWhiteSpace(tok, s))
		{
			if (matchNumber(tok, s))
				line = tok->n;
			else
				return 0;
		}

		return programRun(line);
	}

  return 0;
}
Exemplo n.º 4
0
	inline bool isLiteral(TToken &tk)
	{
		return matchNumber(tk)||matchBool(tk)|| matchChar(tk)|| matchString(tk);
	}