~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to third_party/ply/example/BASIC/basiclog.py

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# An implementation of Dartmouth BASIC (1964)
 
2
#
 
3
 
 
4
import sys
 
5
sys.path.insert(0,"../..")
 
6
 
 
7
if sys.version_info[0] >= 3:
 
8
    raw_input = input
 
9
 
 
10
import logging
 
11
logging.basicConfig(
 
12
    level = logging.INFO,
 
13
    filename = "parselog.txt",
 
14
    filemode = "w"
 
15
)
 
16
log = logging.getLogger()
 
17
 
 
18
import basiclex
 
19
import basparse
 
20
import basinterp
 
21
 
 
22
# If a filename has been specified, we try to run it.
 
23
# If a runtime error occurs, we bail out and enter
 
24
# interactive mode below
 
25
if len(sys.argv) == 2:
 
26
    data = open(sys.argv[1]).read()
 
27
    prog = basparse.parse(data,debug=log)
 
28
    if not prog: raise SystemExit
 
29
    b = basinterp.BasicInterpreter(prog)
 
30
    try:
 
31
        b.run()
 
32
        raise SystemExit
 
33
    except RuntimeError:
 
34
        pass
 
35
 
 
36
else:
 
37
    b = basinterp.BasicInterpreter({})
 
38
 
 
39
# Interactive mode.  This incrementally adds/deletes statements
 
40
# from the program stored in the BasicInterpreter object.  In
 
41
# addition, special commands 'NEW','LIST',and 'RUN' are added.
 
42
# Specifying a line number with no code deletes that line from
 
43
# the program.
 
44
 
 
45
while 1:
 
46
    try:
 
47
        line = raw_input("[BASIC] ")
 
48
    except EOFError:
 
49
        raise SystemExit
 
50
    if not line: continue
 
51
    line += "\n"
 
52
    prog = basparse.parse(line,debug=log)
 
53
    if not prog: continue
 
54
 
 
55
    keys = list(prog)
 
56
    if keys[0] > 0:
 
57
         b.add_statements(prog)
 
58
    else:
 
59
         stat = prog[keys[0]]
 
60
         if stat[0] == 'RUN':
 
61
             try:
 
62
                 b.run()
 
63
             except RuntimeError:
 
64
                 pass
 
65
         elif stat[0] == 'LIST':
 
66
             b.list()
 
67
         elif stat[0] == 'BLANK':
 
68
             b.del_line(stat[1])
 
69
         elif stat[0] == 'NEW':
 
70
             b.new()
 
71
 
 
72
  
 
73
            
 
74
 
 
75
 
 
76
 
 
77
 
 
78
 
 
79