mirror of
https://bitbucket.org/smil3y/katie.git
synced 2025-02-23 10:22:55 +00:00
104 lines
2.5 KiB
C++
104 lines
2.5 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2015 The Qt Company Ltd.
|
|
** Copyright (C) 2016 Ivailo Monev
|
|
**
|
|
** This file is part of the utils of the Katie Toolkit.
|
|
**
|
|
** $QT_BEGIN_LICENSE:LGPL$
|
|
**
|
|
** GNU Lesser General Public License Usage
|
|
** This file may be used under the terms of the GNU Lesser
|
|
** General Public License version 2.1 as published by the Free Software
|
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
** packaging of this file. Please review the following information to
|
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
**
|
|
** $QT_END_LICENSE$
|
|
**
|
|
****************************************************************************/
|
|
|
|
#ifndef GRAMMAR_P_H
|
|
#define GRAMMAR_P_H
|
|
|
|
#include <qglobal.h>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
class grammar
|
|
{
|
|
public:
|
|
enum {
|
|
EOF_SYMBOL = 0,
|
|
COLON = 16,
|
|
DECL = 19,
|
|
DECL_FILE = 3,
|
|
ERROR = 21,
|
|
EXPECT = 4,
|
|
EXPECT_RR = 5,
|
|
ID = 1,
|
|
IMPL = 20,
|
|
IMPL_FILE = 6,
|
|
LEFT = 7,
|
|
MERGED_OUTPUT = 8,
|
|
NONASSOC = 9,
|
|
OR = 17,
|
|
PARSER = 10,
|
|
PREC = 11,
|
|
RIGHT = 12,
|
|
SEMICOLON = 18,
|
|
START = 13,
|
|
STRING_LITERAL = 2,
|
|
TOKEN = 14,
|
|
TOKEN_PREFIX = 15,
|
|
|
|
ACCEPT_STATE = 68,
|
|
RULE_COUNT = 45,
|
|
STATE_COUNT = 69,
|
|
TERMINAL_COUNT = 22,
|
|
NON_TERMINAL_COUNT = 24,
|
|
|
|
GOTO_INDEX_OFFSET = 69,
|
|
GOTO_INFO_OFFSET = 76,
|
|
GOTO_CHECK_OFFSET = 76
|
|
};
|
|
|
|
static const char *const spell [];
|
|
static const int lhs [];
|
|
static const int rhs [];
|
|
static const int goto_default [];
|
|
static const int action_default [];
|
|
static const int action_index [];
|
|
static const int action_info [];
|
|
static const int action_check [];
|
|
|
|
inline int nt_action (int state, int nt) const
|
|
{
|
|
const int *const goto_index = &action_index [GOTO_INDEX_OFFSET];
|
|
const int *const goto_check = &action_check [GOTO_CHECK_OFFSET];
|
|
|
|
const int yyn = goto_index [state] + nt;
|
|
|
|
if (yyn < 0 || goto_check [yyn] != nt)
|
|
return goto_default [nt];
|
|
|
|
const int *const goto_info = &action_info [GOTO_INFO_OFFSET];
|
|
return goto_info [yyn];
|
|
}
|
|
|
|
inline int t_action (int state, int token) const
|
|
{
|
|
const int yyn = action_index [state] + token;
|
|
|
|
if (yyn < 0 || action_check [yyn] != token)
|
|
return - action_default [state];
|
|
|
|
return action_info [yyn];
|
|
}
|
|
};
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
#endif // GRAMMAR_P_H
|
|
|