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
|
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
|
§.3 Documentation
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,19 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with Thun. If not see <http://www.gnu.org/licenses/>.
|
# along with Thun. If not see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
import sys
|
||||||
from .library import initialize, inscribe
|
from .library import initialize, inscribe
|
||||||
from .joy import repl
|
from .joy import repl, interp
|
||||||
from .utils.pretty_print import trace
|
from .utils.pretty_print import trace
|
||||||
|
|
||||||
|
|
||||||
inscribe(trace)
|
inscribe(trace)
|
||||||
print('''\
|
|
||||||
|
if '-q' in sys.argv:
|
||||||
|
j = interp
|
||||||
|
else:
|
||||||
|
j = repl
|
||||||
|
print('''\
|
||||||
Thun - Copyright © 2017 Simon Forman
|
Thun - Copyright © 2017 Simon Forman
|
||||||
This program comes with ABSOLUTELY NO WARRANTY; for details type "warranty".
|
This program comes with ABSOLUTELY NO WARRANTY; for details type "warranty".
|
||||||
This is free software, and you are welcome to redistribute it
|
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
|
Type "words" to see a list of all words, and "[<name>] help" to print the
|
||||||
docs for a word.
|
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_exc()
|
||||||
print()
|
print()
|
||||||
return stack
|
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