Является ли созданный синтаксический анализатор C ++ Bison повторно входящим?

Я работаю над хобби-проектом, который использует flex / bison для создания сканера / синтаксического анализатора C ++. Потому что есть много миллиардов разбирающихся объектов. Сам синтаксический анализ — смущающая параллельная проблема. Я хочу объединить пару готовых к запуску объектов сканера / анализатора и позволить им работать параллельно.

Я читаю официальный документ Flex и Bison и просматриваю их сгенерированные коды.

Я могу подтвердить, что из документа Flex и его кода повторно генерируется сканер C ++.

Однако мне трудно это подтвердить из документа Bison. В нем есть документ, в котором говорится о том, как создать в Bison реинтегрирующий C-парсер. Но это явно не означает, что если вы создаете синтаксический анализатор C ++, он является повторным. Я нашел пару статических членов класса в сгенерированном Bison файле заголовка парсера, что заставляет меня задуматься об этом:

// 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_[];

Является ли созданный синтаксический анализатор C ++ Bison повторно входящим?

0

Решение

Это все static const который полностью совместим с повторным входом. Таблицы определяют правила перехода синтаксического анализатора и принципиально не отличаются от исполняемого кода синтаксического анализатора, который также является статическим и неизменным.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]