亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++用來檢測數據類型的聲明工具源碼

發布時間:2020-06-25 14:26:36 來源:網絡 閱讀:418 作者:weweishen 欄目:移動開發

代碼期間,把代碼過程中較好的代碼片段做個珍藏,如下的代碼內容是關于C++用來檢測數據類型的聲明工具的代碼,應該是對碼農有較大用。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define MAXTOKENS 100
#define MAXTOKENLEN 64

struct token{
char type;
char string[MAXTOKENLEN];
};

int top = -1;
struct token stack[MAXTOKENS];
struct token this;

#define pop stack[top--]
#define push(s) stack[++top] = s

#define STRCMP(a,R,b) (strcmp(a,b) R 0)

enum type_tag classify_string(void)
{
if (STRCMP(s,==,"const"))
{
strcpy(s,"read-only");
return QUALIFIER;
}
if (STRCMP(s,==,"volatile")) return QUALIFIER;
if (STRCMP(s,==,"void")) return TYPE;
if (STRCMP(s,==,"char")) return TYPE;
if (STRCMP(s,==,"signed")) return TYPE;
if (STRCMP(s,==,"unsigned")) return TYPE;
if (STRCMP(s,==,"short")) return TYPE;
if (STRCMP(s,==,"int")) return TYPE;
if (STRCMP(s,==,"long")) return TYPE;
if (STRCMP(s,==,"double")) return TYPE;
if (STRCMP(s,==,"float")) return TYPE;
if (STRCMP(s,==,"struct")) return TYPE;
if (STRCMP(s,==,"union")) return TYPE;
if (STRCMP(s,==,"enum")) return TYPE;
return IDENTIFIER;
}

void gettoken(void)
{

{
    this.type = (char)classify_string();
    return;
}

{
    strcpy(this.string,"pointer to");
    return;
}

this.string[1] = '';
return;

}

int read_to_first_identifier(void)
{
{
push(this);
gettoken();
}

printf("%s is ",this.string);
return 0;

}

int deal_with_arrays(void)
{
while(this.type == '[')
{
printf("array ");
if (isdigit(this.string[0]))
{
printf("0..%d ",atoi(this.string)-1);
}

    printf("of ");
}

return 0;

}

int deal_with_function_args(void)
{
{
gettoken();
}

printf("function returning ");
return 0;

}

int deal_with_pointers(void)
{
{
printf("%s ",pop.string);
}
return 0;
}

int deal_with_declarator(void)
{
switch(this.type)
{
case '[' : deal_with_arrays();break;
case '(' : deal_with_function_args();break;
default : break;
}

while(top >= 0)
{
    if (stack[top].type == '(')
    {
        pop;
    }
    else
    {
        printf("%s ",pop.string);
    }
}

return 0;

}

int main(void)
{
read_to_first_identifier();
deal_with_declarator();
printf("n");

return 0;

}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘阴县| 安化县| 武宣县| 托克逊县| 明光市| 隆林| 东兴市| 巢湖市| 大方县| 池州市| 合江县| 太仓市| 鄱阳县| 定边县| 常山县| 罗山县| 吉安市| 新建县| 汶川县| 永昌县| 丰县| 赣榆县| 宜昌市| 古蔺县| 通州区| 镇赉县| 灵丘县| 睢宁县| 丹凤县| 凌云县| 张家港市| 馆陶县| 红原县| 凌海市| 榆中县| 乐山市| 奈曼旗| 镇安县| 安平县| 孟津县| 纳雍县|