private void computation() throws IOException, SyntaxFormatException {
		assertAndMoveNext(TokenType.MAIN);

		VariableTable globalVarList = varDecl();
		for (VariableTable moreVar = varDecl(); moreVar != null; moreVar = varDecl()) {
			globalVarList.append(moreVar);
		}
		if (globalVarList == null) {
			globalVarList = new VariableTable();
		}

		Function funcList = funcDecl(globalVarList);
		for (Function func = funcDecl(globalVarList); func != null; func = funcDecl(globalVarList)) {
		}

		assertAndMoveNext(TokenType.BEGIN_BRACE);
		if (Function.getAllFunction().size() > 0) {
			rootBlock = new Block(new VariableTable(), globalVarList);
		} else {
			rootBlock = new Block(globalVarList, null);
		}
		CFGResult allStateSequence = statSequence(rootBlock);
		if (allStateSequence == null) {
			throwFormatException("statSequence is missing");
		}
		inter.computeMain(globalVarList, funcList, allStateSequence);
		assertAndMoveNext(TokenType.END_BRACE);
		assertAndMoveNext(TokenType.PERIOD);
	}