private void setName(String token, int line, int column)
			throws SyntaxException {// keyword check.
		if ("END".equals(token)) {
			throw new SyntaxException("Error for 'END' keyword", line, column);
		}
		String name = token;
		if (token.endsWith("]")) {
			int s = token.indexOf("[");
			String count = token.substring(s + 1, token.length() - 1);
			if (count.isEmpty()) {
				throw new SyntaxException("Empty Array for '" + token + "'",
						line, column);
			} else {
				
				if (count.matches("\\d*")) {
					stack.peek().__ARRAYCOUNT__(Integer.parseInt(count));
					name = token.substring(0,s);
				} else {
					throw new SyntaxException("Syntax error on token '" + token
							+ "'", line, column);
				}
			}
		}

		if (!namePattern.matcher(name).matches()) {// named rule check
			throw new SyntaxException("Syntax error on token '" + token + "'",
					line, column);
		}
		stack.peek().__NAME__(name);
	}