Je travaille sur un projet hobby qui utilise flex/bison pour générer un scanner/analyseur C++. Parce qu'il y a nombre de gazillions des objets d'analyse. L'analyse elle-même est un problème embarrassant parallèle. Je veux regrouper un objet analyseur/analyseur prêt à l'emploi et les laisser fonctionner en parallèle. J'ai lu le document officiel de Flex et Bison et parcouru leurs codes générés.Est généré C++ Bison parser re-entrant?
Je peux confirmer qu'à partir du document Flex et de son code, le scanner C++ générateur est de retour.
Cependant, j'ai du mal à le confirmer à partir du document Bison. Il a un document indiquant comment construire un analyseur C ré-entrant dans Bison. Mais cela n'implique pas explicitement que si vous construisez un analyseur C++, il est re-entrant. J'ai trouvé un couple de membre de classe statique dans Bison généré fichier d'en-tête de l'analyseur, ce qui me fait préoccupation à ce sujet:
// Tables.
// YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
// STATE-NUM.
static const short int yypact_[];
// YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
// Performed when YYTABLE does not specify something else to do. Zero
// means the default is an error.
static const unsigned char yydefact_[];
// YYPGOTO[NTERM-NUM].
static const signed char yypgoto_[];
// YYDEFGOTO[NTERM-NUM].
static const signed char yydefgoto_[];
// YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
// positive, shift that token. If negative, reduce the rule whose
// number is the opposite. If YYTABLE_NINF, syntax error.
static const short int yytable_[];
static const short int yycheck_[];
// YYSTOS[STATE-NUM] -- The (internal number of the) accessing
// symbol of state STATE-NUM.
static const unsigned char yystos_[];
// YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
static const unsigned char yyr1_[];
// YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
static const unsigned char yyr2_[];
est généré analyseur C++ Bison rentrante?
Très bon point! Voulez-vous dire que le tableau lui-même est const ou l'élément de tableau est const? J'ai besoin de trouver une référence C++ pour les différencier. –
Les tableaux C++ (comme les tableaux C) ne peuvent pas être redimensionnés, donc il n'y a pas de différence entre le tableau étant const et les éléments du tableau étant const. – rici
Merci pour votre réponse. J'ai passé en revue le chapitre const dans C++ Primer. Vivant dans le monde de Java trop longtemps, j'ai presque oublié cela. –