summaryrefslogtreecommitdiffstats
path: root/util/qlalr/examples/dummy-xml
diff options
context:
space:
mode:
Diffstat (limited to 'util/qlalr/examples/dummy-xml')
-rw-r--r--util/qlalr/examples/dummy-xml/dummy-xml.pro2
-rw-r--r--util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp123
-rw-r--r--util/qlalr/examples/dummy-xml/xml.g242
3 files changed, 0 insertions, 367 deletions
diff --git a/util/qlalr/examples/dummy-xml/dummy-xml.pro b/util/qlalr/examples/dummy-xml/dummy-xml.pro
deleted file mode 100644
index e54512d6c9..0000000000
--- a/util/qlalr/examples/dummy-xml/dummy-xml.pro
+++ /dev/null
@@ -1,2 +0,0 @@
-HEADERS += xmltable_p.h
-SOURCES += xmlreader.cpp xmltable.cpp
diff --git a/util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp b/util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp
deleted file mode 100644
index 3d2a09c845..0000000000
--- a/util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QLALR module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <cstdlib>
-#include <cstdio>
-
-enum Token {
- EOF_SYMBOL,
- LEFT_ANGLE,
- RIGHT_ANGLE,
- ANY,
-};
-
-static int current_char;
-static int yytoken;
-static bool in_tag = false;
-
-bool parseXmlStream();
-bool parseTagOrWord();
-bool parseTagName();
-
-inline int nextToken()
-{
- current_char = fgetc(stdin);
- if (current_char == EOF) {
- return (yytoken = EOF_SYMBOL);
- } else if (current_char == '<') {
- in_tag = true;
- return (yytoken = LEFT_ANGLE);
- } else if (in_tag && current_char == '>') {
- in_tag = false;
- return (yytoken = RIGHT_ANGLE);
- }
- return (yytoken = ANY);
-}
-
-bool parse()
-{
- nextToken();
- return parseXmlStream();
-}
-
-bool parseXmlStream()
-{
- while (parseTagOrWord())
- ;
-
- return true;
-}
-
-bool parseTagOrWord()
-{
- if (yytoken == LEFT_ANGLE) {
- nextToken();
- if (! parseTagName())
- return false;
- if (yytoken != RIGHT_ANGLE)
- return false;
- nextToken();
-
- fprintf (stderr, "*** found a tag\n");
-
- } else if (yytoken == ANY) {
- nextToken();
- } else {
- return false;
- }
- return true;
-}
-
-bool parseTagName()
-{
- while (yytoken == ANY)
- nextToken();
-
- return true;
-}
-
-int main()
-{
- if (parse())
- printf("OK\n");
- else
- printf("KO\n");
-}
diff --git a/util/qlalr/examples/dummy-xml/xml.g b/util/qlalr/examples/dummy-xml/xml.g
deleted file mode 100644
index a5d6b6e978..0000000000
--- a/util/qlalr/examples/dummy-xml/xml.g
+++ /dev/null
@@ -1,242 +0,0 @@
-----------------------------------------------------------------------------
---
--- Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
--- Contact: http://www.qt-project.org/legal
---
--- This file is part of the QtCore module of the Qt Toolkit.
---
--- $QT_BEGIN_LICENSE:LGPL$
--- 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 Digia. For licensing terms and
--- conditions see http://qt.digia.com/licensing. For further information
--- use the contact form at http://qt.digia.com/contact-us.
---
--- GNU Lesser General Public License Usage
--- Alternatively, 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.
---
--- In addition, as a special exception, Digia gives you certain additional
--- rights. These rights are described in the Digia Qt LGPL Exception
--- version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
---
--- GNU General Public License Usage
--- Alternatively, this file may be used under the terms of the GNU
--- General Public License version 3.0 as published by the Free Software
--- Foundation and appearing in the file LICENSE.GPL included in the
--- packaging of this file. Please review the following information to
--- ensure the GNU General Public License version 3.0 requirements will be
--- met: http://www.gnu.org/copyleft/gpl.html.
---
---
--- $QT_END_LICENSE$
---
-----------------------------------------------------------------------------
-
-%parser XMLTable
-
-%impl xmlreader.cpp
-
-%token LEFT_ANGLE
-%token RIGHT_ANGLE
-%token ANY
-
-%start XmlStream
-
-/.
-#ifndef XMLREADER_H
-#define XMLREADER_H
-
-#include <QtCore>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include "$header"
-
-class XMLReader: protected $table
-{
-public:
- XMLReader(const QByteArray &bytes);
- ~XMLReader();
-
- bool parse();
-
- inline int nextToken()
- {
- switch (*bufptr++) {
- case '\0':
- return EOF_SYMBOL;
-
- case '<':
- in_tag = true;
- return LEFT_ANGLE;
-
- case '>':
- if (! in_tag)
- break;
- in_tag = false;
- return RIGHT_ANGLE;
- break;
-
- } // switch
-
- return ANY;
- }
-
-protected:
- inline void reallocateStack();
-
- inline int &sym(int index)
- { return stack [tos + index - 1].ival; }
-
-protected:
- int tos;
- int stack_size;
-
- struct StackItem {
- int state;
- int ival;
- };
-
- QVarLengthArray<StackItem> stack;
- unsigned in_tag: 1;
- QByteArray bytes;
- const char *bufptr;
-};
-
-inline void XMLReader::reallocateStack()
-{
- if (! stack_size)
- stack_size = 128;
- else
- stack_size <<= 1;
-
- stack.resize (stack_size);
-}
-
-#endif // XMLREADER_H
-
-XMLReader::XMLReader(const QByteArray &bytes):
- tos(0),
- stack_size(0),
- bytes(bytes)
-{
- bufptr = bytes.constData();
-}
-
-XMLReader::~XMLReader()
-{
-}
-
-bool XMLReader::parse()
-{
- const int INITIAL_STATE = 0;
-
- in_tag = 0;
- bufptr = bytes.constData();
-
- int yytoken = -1;
- reallocateStack();
-
- tos = 0;
- stack [++tos].state = INITIAL_STATE;
-
- while (true)
- {
- const int state = stack [tos].state;
-
- if (yytoken == -1 && - TERMINAL_COUNT != action_index [state])
- yytoken = nextToken();
-
- int act = t_action (state, yytoken);
-
- if (act == ACCEPT_STATE)
- return true;
-
- else if (act > 0)
- {
- if (++tos == stack_size)
- reallocateStack();
-
- stack [tos].ival = *bufptr; // ### save the token value here
- stack [tos].state = act;
- yytoken = -1;
- }
-
- else if (act < 0)
- {
- int r = - act - 1;
-
- tos -= rhs [r];
- act = stack [tos++].state;
-
- switch (r) {
-./
-
-
-
-
-XmlStream: TagOrWord ;
-XmlStream: XmlStream TagOrWord ;
-
-TagOrWord: Tag ;
-TagOrWord: ANY ;
-
-Tag: LEFT_ANGLE TagName RIGHT_ANGLE ;
-/.
- case $rule_number: {
- fprintf (stderr, "*** found a tag\n");
- } break;
-./
-
-TagName: ANY ;
-TagName: TagName ANY ;
-
-
-/.
- } // switch
-
- stack [tos].state = nt_action (act, lhs [r] - TERMINAL_COUNT);
- }
-
- else
- {
- // ### ERROR RECOVERY HERE
- break;
- }
- }
-
- return false;
-}
-
-
-
-/////////////////////////////
-// entry point
-/////////////////////////////
-int main(int, char *argv[])
-{
- QFile f (argv[1]);
-
- if (f.open(QFile::ReadOnly)) {
- QByteArray contents = f.readAll();
- XMLReader parser (contents);
-
- if (parser.parse())
- printf ("OK\n");
- else
- printf ("KO\n");
- }
-}
-
-
-
-
-./
-