1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#ifndef CPPGENERATOR_H
5#define CPPGENERATOR_H
6
7#include "lalr.h"
8#include "compress.h"
9
10class Grammar;
11class Automaton;
12class Recognizer;
13
14class CppGenerator
15{
16public:
17 CppGenerator(const Recognizer &p, Grammar &grammar, Automaton &aut, bool verbose):
18 p (p),
19 grammar (grammar),
20 aut (aut),
21 verbose (verbose),
22 debug_info (false),
23 copyright (false),
24 warnings_are_errors(false) {}
25
26 void operator () ();
27
28 bool debugInfo () const { return debug_info; }
29 void setDebugInfo (bool d) { debug_info = d; }
30
31 void setCopyright (bool t) { copyright = t; }
32
33 void setWarningsAreErrors (bool e) { warnings_are_errors = e; }
34
35private:
36 void generateDecl (QTextStream &out);
37 void generateImpl (QTextStream &out);
38
39 QString debugInfoProt() const;
40 QString copyrightHeader() const;
41 QString privateCopyrightHeader() const;
42
43private:
44 static QString startIncludeGuard(const QString &fileName);
45 static QString endIncludeGuard(const QString &fileName);
46
47 const Recognizer &p;
48 Grammar &grammar;
49 Automaton &aut;
50 bool verbose;
51 int accept_state;
52 int state_count;
53 int terminal_count;
54 int non_terminal_count;
55 bool debug_info;
56 bool copyright;
57 bool warnings_are_errors;
58 Compress compressed_action;
59 Compress compressed_goto;
60 QList<int> count;
61 QList<int> defgoto;
62};
63
64#endif // CPPGENERATOR_H
65

source code of qtbase/src/tools/qlalr/cppgenerator.h