aboutsummaryrefslogtreecommitdiff
path: root/unix/boot/spp/rpp/rpprat/gettok.r
blob: 8ae855db7abf539d820384fc0a47ec41adf41355 (plain) (blame)
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
#-h-  gettok			 2076  local   12/01/80  15:54:09
# gettok - get token. handles file inclusion and line numbers
   include  defs

character function gettok (token, toksiz)

character token (MAXTOK)
integer toksiz
include COMMON_BLOCKS
integer equal
character t, deftok
#character name(MAXNAME), t
#integer i, len, open, length

string ssubr "x$subr"
string sfunc "x$func"
#string incl "include"

#  for (;  level > 0;  level = level - 1) {

	gettok = deftok (token, toksiz)
	if (gettok != EOF) {
	    if (gettok == XPP_DIRECTIVE) {
	        if (equal (token, sfunc) == YES) {
		    call skpblk
		    t = deftok (fcname, MAXNAME)
		    call pbstr (fcname)
		    if (t != ALPHA)
		        call synerr ("Missing function name.")
		    call putbak (BLANK)
		    swvnum = 0
		    swvlev = 0
		    return
	        } else if (equal (token, ssubr) == YES) {
		    swvnum = 0
		    swvlev = 0
		    return
	        } else
		    return
	     }
	     return
	}

	token (1) = EOF
	token (2) = EOS
	gettok = EOF
	return
end


# -- Includes are now processed elsewhere

#	 else if (equal (token, incl) == NO)
#	    return
#
#	 # process 'include' statements:
#	 call skpblk
#	 t = deftok (name, MAXNAME)
#	 if (t == SQUOTE | t == DQUOTE) {
#	    len = length (name) - 1
#	    for (i = 1; i < len; i = i + 1)
#	       name (i) = name (i + 1)
#	    name (i) = EOS
#	    }
#	 i = length (name) + 1
#	 if (level >= NFILES)
#	    call synerr ("includes nested too deeply.")
#	 else {
#	    infile (level + 1) = open (name, READ)
#	    linect (level + 1) = 0
#	    if (infile (level + 1) == ERR)
#	       call synerr ("can't open include.")
#	    else {
#	       level = level + 1
#	       if (fnamp + i <= MAXFNAMES) {
#		  call scopy (name, 1, fnames, fnamp)
#		  fnamp = fnamp + i    # push file name stack
#		  }
#	       }
#	    }
#	 }
#      if (level > 1) {	    # close include file pop file name stack
#	 call close (infile (level))
#	 for (fnamp = fnamp - 1; fnamp > 1; fnamp = fnamp - 1)
#	    if (fnames (fnamp - 1) == EOS)
#	       break
#	 }

#    }