func (st *state) functionType() AST {
	st.checkChar('F')
	if len(st.str) > 0 && st.str[0] == 'Y' {
		// Function has C linkage.  We don't print this.
		st.advance(1)
	}
	ret := st.bareFunctionType(true)
	r := st.refQualifier()
	if r != "" {
		ret = &MethodWithQualifiers{Method: ret, Qualifiers: nil, RefQualifier: r}
	}
	if len(st.str) == 0 || st.str[0] != 'E' {
		st.fail("expected E after function type")
	}
	st.advance(1)
	return ret
}
func (st *state) functionType() AST {
	st.checkChar('F')
	if len(st.str) > 0 && st.str[0] == 'Y' {
		
		st.advance(1)
	}
	ret := st.bareFunctionType(true)
	r := st.refQualifier()
	if r != "" {
		ret = &MethodWithQualifiers{Method: ret, Qualifiers: nil, RefQualifier: r}
	}
	if len(st.str) == 0 || st.str[0] != 'E' {
		st.fail("expected E after function type")
	}
	st.advance(1)
	return ret
}
func ( st * state ) functionType ( ) AST { st . checkChar ( 'F' ) if len ( st . str ) > 0 && st . str [ 0 ] == 'Y' { // Function has C linkage.  We don't print this. st . advance ( 1 ) } ret := st . bareFunctionType ( true ) r := st . refQualifier ( ) if r != " " { ret = & MethodWithQualifiers { Method : ret , Qualifiers : nil , RefQualifier : r } } if len ( st . str ) == 0 || st . str [ 0 ] != 'E' { st . fail ( " " ) } st . advance ( 1 ) return ret }
// <function-type> ::= F [Y] <bare-function-type> [<ref-qualifier>] E
<function - type > :: = F [ Y ] <bare - function - type > [ <ref - qualifier > ] E