aboutsummaryrefslogtreecommitdiffstats
path: root/doc/reference/modules/lexyacc-module.qdoc
blob: 42156c8687dc37994f4db95504205b0d6b57fa03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qbs.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \contentspage index.html
    \page lex_yacc-module.html
    \ingroup list-of-modules

    \title Module lex_yacc
    \since 1.6
    \brief Provides support for the \c lex and \c yacc tools.

    The \c lex_yacc module allows you to create scanners and parsers via the POSIX tools \c lex
    and \c yacc, respectively. These tools are closely related and share a number of properties,
    which is why they are represented by a single module.

    \section1 General Properties

    \table
    \header
        \li Property
        \li Type
        \li Since
        \li Default
        \li Description
    \row
        \li lexBinary
        \li \c{string}
        \li 1.6
        \li \c{"lex"}
        \li The file path of the \c lex tool.
    \row
        \li lexFlags
        \li \c{stringList}
        \li 1.6
        \li \c{empty}
        \li Additional command-line options for the \c lex tool.
    \row
        \li outputTag
        \li \c{string}
        \li 1.6
        \li \c{"c"}
        \li The file tag for the generated scanner and parser sources. Use \c{"cpp"} if you want to
            use a C++ compiler on them.
    \row
        \li uniqueSymbolPrefix
        \li \c{bool}
        \li 1.6
        \li \c{false}
        \li If this property is \c true, the normal prefix \c yy used for the generated lexer
            and parser functions will be replaced by the base name of the file provided as input
            to \c lex and \c yacc, respectively.
            Enable this property if you want to use more than one lexer or parser in a single
            product.
            \note Enabling this property requires associated lexer and scanner source files
                  to have the same base name. It also assumes a variant of \c lex that supports
                  the non-POSIX option \c{-P}, such as \c flex.
    \row
        \li yaccBinary
        \li \c{string}
        \li 1.6
        \li \c{"yacc"}
        \li The file path of the \c yacc tool.
    \row
        \li yaccFlags
        \li \c{stringList}
        \li 1.6
        \li \c{empty}
        \li Additional command-line options for the \c yacc tool.
    \endtable

    \section1 Relevant File Tags

    \table
    \header
        \li Tag
        \li Auto-tagged File Names
        \li Since
        \li Description
    \row
        \li \c{"lex.input"}
        \li \c{*.l}
        \li 1.6
        \li Source files with this tag serve as inputs to the \c lex tool.
    \row
        \li \c{"yacc.input"}
        \li \c{*.y}
        \li 1.6
        \li Source files with this tag serve as inputs to the \c yacc tool.
    \endtable

*/