示例#1
0
int runline(char* line, int* pc) {
	tokeniser_setup(line);
	token = tokeniser_next();
	switch (token) {
		case TOK_PRINT:// STRING|EXPR (, STRING|EXPR)
			do {
				token = tokeniser_next();
				if (token == TOK_EOL || token == TOK_ERR) {
					break;
				}
				if (token == TOK_STRING) {
					printf("%s ", tokeniser_string());
					token = tokeniser_next();
				} else {
					printf("%d ", parseexpression());
				}
				if (token != TOK_COMMA && token != TOK_EOL) {
					printf("expected ','\n");
					return 0;
				}
			}
			while (token != TOK_EOL && token != TOK_ERR);
			printf("\n");
			break;
		case TOK_LET:// VAR = EXPR
			token = tokeniser_next();
			if (token != TOK_VAR) {
				printf("expected variable name\n");
				return 0;
			}
			char* varName = tokeniser_string();
			token = tokeniser_next();
			if (token != TOK_EQ) {
				printf("expected = after variable name\n");
				return 0;
			}
			token = tokeniser_next();
			int val = parseexpression();
			if (token == TOK_ERR) {
				return 0;
			}
			setvariable(varName, token);
			break;
	}
	(*pc)++;
	return 1;
}
示例#2
0
文件: rules.c 项目: 99years/plan9
int
assignment(char *p)
{
	char *var, *qval;
	int n;

	if(!isalpha(p[0]))
		return 0;
	for(var=p; isalnum(*p); p++)
		;
	n = p-var;
	while(*p==' ' || *p=='\t')
			p++;
	if(*p++ != '=')
		return 0;
	while(*p==' ' || *p=='\t')
			p++;
	qval = expand(nil, p, nil);
	setvariable(var, n, p, qval);
	return 1;
}