首页 > 解决方案 > 我的初始化图有什么问题lexname = {{“程序”,程序}}?

问题描述

我的初始化有什么问题似乎有问题

std::map<std::string,LexType> lexname_s = {{"PROGRAM",PROGRAM},
                                  { "TYPE" , TYPE},
                                  { "VAR" , VAR},
                                  {"PROCEDURE", PROCEDURE},
                                  {"BEGIN", BEGIN},
                                  {"END", END},
                                  {"ARRAY", ARRAY},
                                  {"OF", OF},
                                  {"RECORD",  RECORD},
                                  {"IF",  IF },
                                  {"THEN",  THEN },
                                  {"ELSE",  ELSE },
                                  {"FI",  FI },
                                  {"WHILE",  WHILE },
                                  {"DO",  DO },
                                  {"ENDWH",  ENDWH },
                                  {"READ",  READ },
                                  {"WRITE",  WRITE },
                                  {"RETURN",  RETURN },
                                  {"ID",  ID },
                                  {"INTC_VAL",  INTC_VAL },
                                  {"ASSIGN",  ASSIGN },
                                  {"EQ",  EQ },
                                  {"LT",  LT },
                                  {"PLUS",  PLUS },
                                  {"MINUS",  MINUS },
                                  {"TIMES",  TIMES },
                                  {"DIVIDE",  DIVIDE },
                                  {"LPAREN",  LPAREN },
                                  {"RPAREN",  RPAREN },
                                  {"DOT",  DOT },
                                  {"COLON",  COLON },
                                  {"SEMI",  SEMI },
                                  {"COMMA",  COMMA },
                                  {"LMIDPAREN",  LMIDPAREN },
                                  {"RMIDPAREN",  RMIDPAREN },
                                  {"UNDERRANGE",  UNDERRANGE },
                                  {"ENDFILE", EOF },
                                 {"ERROR", ERROR},
                                  };

错误代码

 error: could not convert ‘{{"PROGRAM", PROGRAM}, {"TYPE", TYPE}, {"VAR", VAR}, {"PROCEDURE", PROCEDURE}, {"BEGIN", BEGIN}, {"END", END}, {"ARRAY", ARRAY}, {"OF", OF}, {"RECORD", RECORD}, {"IF", IF}, {"THEN", THEN}, {"ELSE", ELSE}, {"FI", FI}, {"WHILE", WHILE}, {"DO", DO}, {"ENDWH", ENDWH}, {"READ", READ}, {"WRITE", WRITE}, {"RETURN", RETURN}, {"ID", ID}, {"INTC_VAL", INTC_VAL}, {"ASSIGN", ASSIGN}, {"EQ", EQ}, {"LT", LT}, {"PLUS", PLUS}, {"MINUS", MINUS}, {"TIMES", TIMES}, {"DIVIDE", DIVIDE}, {"LPAREN", LPAREN}, {"RPAREN", RPAREN}, {"DOT", DOT}, {"COLON", COLON}, {"SEMI", SEMI}, {"COMMA", COMMA}, {"LMIDPAREN", LMIDPAREN}, {"RMIDPAREN", RMIDPAREN}, {"UNDERRANGE", UNDERRANGE}, {"ENDFILE", -1}, {"ERROR", ERROR}}’ 
from ‘&lt;brace-enclosed initializer list>’ to ‘std::map<std::basic_string<char>, LexType>’
           };

标签: c++gnu

解决方案


EOF是在 stdio.h 中定义的保留宏,因此更改此名称

EOF 扩展为整数常量表达式,类型为 int 和负值,由多个函数返回以指示文件结束,即不再有来自流的输入。[ISO 标准]

现在,如果您注意错误,您会注意到这个 {"ENDFILE", -1}而不是{"ENDFILE", EOF}.

-1EOF宏的值。


推荐阅读