$92 GRAYBYTE WORDPRESS FILE MANAGER $84

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/lib64/python2.7/Demo/threads/

HOME
Current File : /lib64/python2.7/Demo/threads//squasher.py
# Coroutine example:  general coroutine transfers
#
# The program is a variation of a Simula 67 program due to Dahl & Hoare,
# (Dahl/Dijkstra/Hoare, Structured Programming; Academic Press, 1972)
# who in turn credit the original example to Conway.
#
# We have a number of input lines, terminated by a 0 byte.  The problem
# is to squash them together into output lines containing 72 characters
# each.  A semicolon must be added between input lines.  Runs of blanks
# and tabs in input lines must be squashed into single blanks.
# Occurrences of "**" in input lines must be replaced by "^".
#
# Here's a test case:

test = """\
   d    =   sqrt(b**2  -  4*a*c)
twoa    =   2*a
   L    =   -b/twoa
   R    =   d/twoa
  A1    =   L + R
  A2    =   L - R\0
"""

# The program should print:

# d = sqrt(b^2 - 4*a*c);twoa = 2*a; L = -b/twoa; R = d/twoa; A1 = L + R;
#A2 = L - R
#done

# getline: delivers the next input line to its invoker
# disassembler: grabs input lines from getline, and delivers them one
#    character at a time to squasher, also inserting a semicolon into
#    the stream between lines
# squasher:  grabs characters from disassembler and passes them on to
#    assembler, first replacing "**" with "^" and squashing runs of
#    whitespace
# assembler: grabs characters from squasher and packs them into lines
#    with 72 character each, delivering each such line to putline;
#    when it sees a null byte, passes the last line to putline and
#    then kills all the coroutines
# putline: grabs lines from assembler, and just prints them

from Coroutine import *

def getline(text):
    for line in string.splitfields(text, '\n'):
        co.tran(codisassembler, line)

def disassembler():
    while 1:
        card = co.tran(cogetline)
        for i in range(len(card)):
            co.tran(cosquasher, card[i])
        co.tran(cosquasher, ';')

def squasher():
    while 1:
        ch = co.tran(codisassembler)
        if ch == '*':
            ch2 = co.tran(codisassembler)
            if ch2 == '*':
                ch = '^'
            else:
                co.tran(coassembler, ch)
                ch = ch2
        if ch in ' \t':
            while 1:
                ch2 = co.tran(codisassembler)
                if ch2 not in ' \t':
                    break
            co.tran(coassembler, ' ')
            ch = ch2
        co.tran(coassembler, ch)

def assembler():
    line = ''
    while 1:
        ch = co.tran(cosquasher)
        if ch == '\0':
            break
        if len(line) == 72:
            co.tran(coputline, line)
            line = ''
        line = line + ch
    line = line + ' ' * (72 - len(line))
    co.tran(coputline, line)
    co.kill()

def putline():
    while 1:
        line = co.tran(coassembler)
        print line

import string
co = Coroutine()
cogetline = co.create(getline, test)
coputline = co.create(putline)
coassembler = co.create(assembler)
codisassembler = co.create(disassembler)
cosquasher = co.create(squasher)

co.tran(coputline)
print 'done'

# end of example

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
14 Aug 2025 9.26 PM
root / root
0755
Coroutine.py
5.395 KB
20 Apr 2020 4.13 AM
root / root
0644
Coroutine.pyc
4.147 KB
10 Apr 2024 11.58 AM
root / root
0644
Coroutine.pyo
4.147 KB
10 Apr 2024 11.58 AM
root / root
0644
Generator.py
2.477 KB
20 Apr 2020 4.13 AM
root / root
0644
Generator.pyc
3.241 KB
10 Apr 2024 11.58 AM
root / root
0644
Generator.pyo
3.241 KB
10 Apr 2024 11.58 AM
root / root
0644
README
0.43 KB
20 Apr 2020 4.13 AM
root / root
0644
fcmp.py
1.71 KB
20 Apr 2020 4.13 AM
root / root
0644
fcmp.pyc
1.653 KB
10 Apr 2024 11.58 AM
root / root
0644
fcmp.pyo
1.653 KB
10 Apr 2024 11.58 AM
root / root
0644
find.py
4.116 KB
20 Apr 2020 4.13 AM
root / root
0644
find.pyc
3.782 KB
10 Apr 2024 11.58 AM
root / root
0644
find.pyo
3.782 KB
10 Apr 2024 11.58 AM
root / root
0644
squasher.py
2.967 KB
20 Apr 2020 4.13 AM
root / root
0644
squasher.pyc
2.063 KB
10 Apr 2024 11.58 AM
root / root
0644
squasher.pyo
2.063 KB
10 Apr 2024 11.58 AM
root / root
0644
sync.py
21.147 KB
20 Apr 2020 4.13 AM
root / root
0644
sync.pyc
10.854 KB
10 Apr 2024 11.58 AM
root / root
0644
sync.pyo
10.854 KB
10 Apr 2024 11.58 AM
root / root
0644
telnet.py
3.005 KB
20 Apr 2020 4.13 AM
root / root
0644
telnet.pyc
2.472 KB
10 Apr 2024 11.58 AM
root / root
0644
telnet.pyo
2.472 KB
10 Apr 2024 11.58 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF