public final void primitiveType() throws RecognitionException
    {
        try {
            // CPP.g:224:3: ( 'char' | 'wchar_t' | 'bool' | 'short' | 'int' | 'float' | 'double' |
            // 'void' | 'signed' | 'unsigned' | 'long' )
            int alt14 = 11;
            switch (this.input.LA(1))
            {
                case 31:
                {
                    alt14 = 1;
                }
                    break;
                case 32:
                {
                    alt14 = 2;
                }
                    break;
                case 33:
                {
                    alt14 = 3;
                }
                    break;
                case 34:
                {
                    alt14 = 4;
                }
                    break;
                case 35:
                {
                    alt14 = 5;
                }
                    break;
                case 36:
                {
                    alt14 = 6;
                }
                    break;
                case 37:
                {
                    alt14 = 7;
                }
                    break;
                case 38:
                {
                    alt14 = 8;
                }
                    break;
                case 39:
                {
                    alt14 = 9;
                }
                    break;
                case 40:
                {
                    alt14 = 10;
                }
                    break;
                case 41:
                {
                    alt14 = 11;
                }
                    break;
                default:
                    if (this.state.backtracking > 0) {
                        this.state.failed = true;
                        return;
                    }
                    NoViableAltException nvae = new NoViableAltException("", 14, 0, this.input);
                    
                    throw nvae;
            }
            
            switch (alt14)
            {
                case 1:
                    // CPP.g:224:5: 'char'
                {
                    this.match(this.input, 31, FOLLOW_31_in_primitiveType813);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new CharTypeAST();
                    }
                    
                }
                    break;
                case 2:
                    // CPP.g:225:5: 'wchar_t'
                {
                    this.match(this.input, 32, FOLLOW_32_in_primitiveType821);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new WCharTTypeAST();
                    }
                    
                }
                    break;
                case 3:
                    // CPP.g:226:5: 'bool'
                {
                    this.match(this.input, 33, FOLLOW_33_in_primitiveType829);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new BoolTypeAST();
                    }
                    
                }
                    break;
                case 4:
                    // CPP.g:227:5: 'short'
                {
                    this.match(this.input, 34, FOLLOW_34_in_primitiveType837);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new ShortTypeAST();
                    }
                    
                }
                    break;
                case 5:
                    // CPP.g:228:5: 'int'
                {
                    this.match(this.input, 35, FOLLOW_35_in_primitiveType845);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new IntTypeAST();
                    }
                    
                }
                    break;
                case 6:
                    // CPP.g:229:5: 'float'
                {
                    this.match(this.input, 36, FOLLOW_36_in_primitiveType853);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new FloatTypeAST();
                    }
                    
                }
                    break;
                case 7:
                    // CPP.g:230:5: 'double'
                {
                    this.match(this.input, 37, FOLLOW_37_in_primitiveType861);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new DoubleTypeAST();
                    }
                    
                }
                    break;
                case 8:
                    // CPP.g:231:5: 'void'
                {
                    this.match(this.input, 38, FOLLOW_38_in_primitiveType869);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new VoidTypeAST();
                    }
                    
                }
                    break;
                case 9:
                    // CPP.g:232:5: 'signed'
                {
                    this.match(this.input, 39, FOLLOW_39_in_primitiveType877);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new SignedTypeAST();
                    }
                    
                }
                    break;
                case 10:
                    // CPP.g:233:5: 'unsigned'
                {
                    this.match(this.input, 40, FOLLOW_40_in_primitiveType885);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new UnsignedTypeAST();
                    }
                    
                }
                    break;
                case 11:
                    // CPP.g:234:5: 'long'
                {
                    this.match(this.input, 41, FOLLOW_41_in_primitiveType893);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new LongTypeAST();
                    }
                    
                }
                    break;
                
            }
        }
        catch (RecognitionException re) {
            this.reportError(re);
            this.recover(this.input, re);
        } finally {
        }
        return;
    }