Add a "quiet" mode.
This brings the Python Joy interpreter into better congruence with the Nim interpreter for ease of automated testing.
This commit is contained in:
parent
1cf82b8bcb
commit
c00c6a4e32
6
README
6
README
|
|
@ -64,6 +64,12 @@ To start a crude REPL:
|
|||
|
||||
python -m joy
|
||||
|
||||
There is a "quiet" mode for e.g. using joy from a shell script:
|
||||
|
||||
python -m joy -q
|
||||
|
||||
This supresses the initial banner output and the prompt text.
|
||||
|
||||
|
||||
§.3 Documentation
|
||||
|
||||
|
|
|
|||
|
|
@ -17,13 +17,19 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with Thun. If not see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
import sys
|
||||
from .library import initialize, inscribe
|
||||
from .joy import repl
|
||||
from .joy import repl, interp
|
||||
from .utils.pretty_print import trace
|
||||
|
||||
|
||||
inscribe(trace)
|
||||
print('''\
|
||||
|
||||
if '-q' in sys.argv:
|
||||
j = interp
|
||||
else:
|
||||
j = repl
|
||||
print('''\
|
||||
Thun - Copyright © 2017 Simon Forman
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type "warranty".
|
||||
This is free software, and you are welcome to redistribute it
|
||||
|
|
@ -31,4 +37,4 @@ under certain conditions; type "sharing" for details.
|
|||
Type "words" to see a list of all words, and "[<name>] help" to print the
|
||||
docs for a word.
|
||||
''')
|
||||
stack = repl(dictionary=initialize())
|
||||
stack = j(dictionary=initialize())
|
||||
|
|
|
|||
22
joy/joy.py
22
joy/joy.py
|
|
@ -107,3 +107,25 @@ def repl(stack=(), dictionary=None):
|
|||
print_exc()
|
||||
print()
|
||||
return stack
|
||||
|
||||
|
||||
def interp(stack=(), dictionary=None):
|
||||
'''
|
||||
Simple REPL with no extra output, suitable for use in scripts.
|
||||
'''
|
||||
if dictionary is None:
|
||||
dictionary = {}
|
||||
try:
|
||||
while True:
|
||||
try:
|
||||
text = input()
|
||||
except (EOFError, KeyboardInterrupt):
|
||||
break
|
||||
try:
|
||||
stack, _, dictionary = run(text, stack, dictionary)
|
||||
except:
|
||||
print_exc()
|
||||
print(stack_to_string(stack))
|
||||
except:
|
||||
print_exc()
|
||||
return stack
|
||||
|
|
|
|||
Loading…
Reference in New Issue