File: runone

package info (click to toggle)
bisonc%2B%2B 6.09.02-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,984 kB
  • sloc: cpp: 9,375; ansic: 1,505; fortran: 1,134; makefile: 1,062; sh: 526; yacc: 84; lex: 60
file content (118 lines) | stat: -rwxr-xr-x 3,125 bytes parent folder | download
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
117
118
#!/bin/bash

    # Modifiy the COMMAND variable to your taste, if your shell isn't
    # mentioned.  By specifying your COMMAND-shell last it will be used;
COMMAND="/usr/bin/tcsh -f"
#COMMAND=/bin/bash

    # Assuming bisonc++ is in your computer's search-path. If not, define
    # BISONCPP as the full path to bisconc++:
#BISONCPP=/home/frank/git/bisonc++/src/bisonc++/tmp/bin/binary
BISONCPP=bisonc++

    # UNCOMMENT the following variables if you want to run the examples from
    # the source distribution's documentation/regression directory rather than
    # from bisonc++ documentation's `regression' subdirectory.
SKEL=../../../../skeletons
BISONCPP="../../../../tmp/bin/binary -S ${SKEL}"

example()
{
    orgdir=`pwd`

    echo 
    echo Running example $1

    cd $1
    cwd=`pwd`

    echo --------------------------------
    echo
    cat doc
    echo
    echo '(waiting for the compilation to complete ...)'
    echo --------------------------------
    
    cd parser
    echo $BISONCPP --construction $3 grammar

    $BISONCPP --construction --debug $3 grammar

    echo    
    if [ -s ../demo.cc ] 
    then
        cd ../scanner
        flexc++  lexer
        cd ..
        g++ $ICMAKE_CPPSTD -Wall -o demo *.cc */*.cc
        echo "ENTERING A SHELL: \`demo' runs the program, use \`exit' to return"
        echo "      (the grammar analysis is in the \`parser' subdirectory)"
    else    
        echo "ENTERING A SHELL: Inspect the results, use \`exit' to return"
    fi

    echo "bison's output is in \`bgram.output', bisonc++'s output in \`grammar.output'"
    echo
    $COMMAND

    cd $cwd

        # the doc-test is a safequard agains accidentally removing files

    [ -s doc ]                      &&  \
    find ./ -type f                     \
        \(                              \
            -name Parser*h      -or     \
            -name parserbase.h  -or     \
            -name scannerbase.h         \
        \)                              \
        -exec rm '{}' ';'           &&  \
    find ./ -type f                     \
        -not -regex '.*/_.*'            \
        -not -name doc                  \
        -not -name demo.cc              \
        -not -name bgram                \
        -not -name grammar              \
        -not -regex '.*/*h'             \
        -not -regex '.*/dallas.*'       \
        -not -name input                \
        -not -name lexer                \
        -exec rm '{}' ';'

    cd $orgdir
    tput clear
}

tput clear

if [ $# == 0 ] ; then
    echo Provide the name of a regression-test subdirectory as argument to
    echo run that regression test.
    exit 0
fi

echo "
    $1/parser/grammar is processed by bisonc++.  Bisonc++'s output is 
provided in the file \`grammar.output' 

    From $1/parser, bisonc++ should be accessible as

$BISONCPP

    If that's not true for you, consider changing the BISONCPP variable in
this script.

    Press Enter to create the parser and \(if available\) build the
demo-program; press strl-C to stop.

[press Enter to continue]
"

read RUN
tput clear
echo

example $1

tput clear