private AST parseFuncCall() throws ParserException {
        Token ident = nextToken();
        String funcName = ident.getVal();
        Token nextTok = lookForward();
        if(nextTok!=null && nextTok.getVal().equals("(")){
            nextToken();
        } else {
            return null;
        }
        List<FuncParamAST> funcParams = new ArrayList<FuncParamAST>();
        FuncParamAST param = parseFuncParam();
        while (param != null) {
            funcParams.add(param);
            Token tok = lookForward();
            if (tok == null) {
                break;
            }
            if (")".equals(tok.getVal())){
                break;
            }
            expect(",");
            param = parseFuncParam();
        }
        expect(")");
        return new FuncCallAST(funcName, funcParams);
    }