aboutsummaryrefslogtreecommitdiff
path: root/unix/boot/spp/rpp/rpprat/balpar.r
blob: 8e0388b81d42ef87e229968332c95aa5d751c778 (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
#-h-  balpar			  854  local   12/01/80  15:53:46
# balpar - copy balanced paren string
   include  defs

   subroutine balpar

   character t, token (MAXTOK)
   character gettok, gnbtok

   integer nlpar

   if (gnbtok (token, MAXTOK) != LPAREN) {
      call synerr ("missing left paren.")
      return
      }
   call outstr (token)
   nlpar = 1
   repeat {
      t = gettok (token, MAXTOK)
      if (t == SEMICOL | t == LBRACE | t == RBRACE | t == EOF) {
	 call pbstr (token)
	 break
	 }
      if (t == NEWLINE)      # delete newlines
	 token (1) = EOS
      else if (t == LPAREN)
	 nlpar = nlpar + 1
      else if (t == RPAREN)
	 nlpar = nlpar - 1
      if (t == ALPHA)
	 call squash (token)
      # else nothing special
      call outstr (token)
      } until (nlpar <= 0)

   if (nlpar != 0)
      call synerr ("missing parenthesis in condition.")

   return
   end