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
|