อินโทร การติดตั้ง การใช้งาน ไวยากรณ์ การตั้งค่า เกี่ยวกับ
เครื่องมือในการเรียกใช้โปรแกรมจำนวนมากที่เขียนในหลายภาษาจากไฟล์เดียว
โดยปกติในการฝึกฝนภาษาการเขียนโปรแกรมหลายภาษาทันทีที่คุณต้องการหลายไฟล์หรือหลายโครงการอาจมีหลาย IDE Runmany เป็นเครื่องมือที่ให้คุณเขียนหลายโปรแกรมในไฟล์ เดียวกัน โดยใช้ภาษาการเขียนโปรแกรมใด ๆ ที่คุณต้องการจากนั้นเรียกใช้ทั้งหมดในครั้งเดียว
Runmany ใช้ ".Many" เป็นส่วนขยายไฟล์ดังนั้นตัวอย่างเช่นหากไฟล์ที่เรียกว่า simple.many มีเนื้อหาต่อไปนี้:
Python:
print("Hi")
JavaScript:
console.log("Hi")
C:
#include <stdio.h>
int main() {
printf("Hin");
return 0;
}
จากนั้นทำ runmany simple.many ในเทอร์มินัลจะสร้างผลลัพธ์ที่เป็นระเบียบของการเรียกใช้โปรแกรม Python, JavaScript และ C ภายใน:
************************************************************
1. Python
-------------------- output from line 1 --------------------
Hi
************************************************************
2. JavaScript
-------------------- output from line 4 --------------------
Hi
************************************************************
3. C
-------------------- output from line 7 --------------------
Hi
************************************************************
3/3 programs successfully run!
3/3 had the exact same stdout!
************************************************************
Argv และ stdin ยังสามารถระบุได้ในไฟล์. many บนพื้นฐานต่อภาษาและมีการตั้งค่ามากมายที่สามารถปรับแต่งวิธีการทำงานของภาษาและแสดงในเอาต์พุต
โดยทั่วไป Runmany สามารถใช้สำหรับ:
โดยรวม Runmany เป็นเครื่องมือที่มีประโยชน์สำหรับทุกคนที่ต้องการเล่นกับภาษาการเขียนโปรแกรมหลายภาษาในแต่ละครั้ง
ตรวจสอบให้แน่ใจว่าคุณติดตั้ง Python เวอร์ชัน 3.6 หรือสูงกว่าจากนั้นเรียกใช้
pip install runmany
ในเทอร์มินัลเพื่อติดตั้งแพ็คเกจ Runmany Python ล่าสุดจาก PYPI จากนั้น runmany <filename> ควรทำงานเพื่อเรียกใช้ไฟล์. หลายไฟล์ ดูวิธีเพิ่มเติมในการใช้งาน
Runmany ทำงานได้ดีที่สุดใน VSCODE ด้วย Extension VSCODE ของ Companion Runmany ซึ่งให้การไฮไลต์ไวยากรณ์สำหรับไฟล์. many และวิธีที่รวดเร็วในการเรียกใช้ ติดตั้งส่วนขยายให้ฟรีจากตลาดหรือโดยใช้งาน:
code --install-extension discretegames.runmany
นอกจากนี้คุณยังต้องใช้ภาษาการเขียนโปรแกรมที่คุณต้องการให้ Runmany ทำงานติดตั้งบนคอมพิวเตอร์ของคุณเพราะ Runmany ใช้ล่าม/คอมไพเลอร์ของพวกเขาเบื้องหลังฉากเพื่อเรียกใช้โปรแกรมจริง
Runmany ได้รับการสนับสนุนในตัวสำหรับภาษาต่อไปนี้:
Ada, Bash, Batch, C, C#, C ++, Dart, Fortran, Go, Groovy, Haskell, Java, JavaScript, Julia, Kotlin, Lisp, Lua, Mips, Pascal, Perl, Php, Powershell
ความหมายหากคุณติดตั้งหนึ่งในภาษาเหล่านี้แล้วมีโอกาสที่ดีที่จะทำงานใน Runmany โดยอัตโนมัติ
ส่วนขยายของ Runmany VSCODE ให้การเน้นไวยากรณ์สำหรับภาษาเหล่านี้ทั้งหมดรวมถึงอีกไม่กี่
มีวิธีเพิ่มภาษาที่กำหนดเองและเปลี่ยนพฤติกรรมของภาษาในตัวและทำให้พวกเขาแตกต่างกันในระบบปฏิบัติการที่แตกต่างกัน สำหรับข้อมูลเพิ่มเติมดูการปรับแต่งภาษา
โปรดทราบว่า Print เป็นภาษายูทิลิตี้ที่พิมพ์เนื้อหารหัสไปยัง stdout และ MIPS คาดว่า mars.jar จะอยู่ในไดเรกทอรีการทำงานปัจจุบัน
หาก pip install runmany ไม่ทำงานลอง pip3 install runmany หรือ python -m pip install runmany หรือ python3 -m pip install runmany
บน Windows หากไม่มีอะไรใช้งานได้คุณอาจต้องตรวจสอบให้แน่ใจว่าไดเรกทอรีการติดตั้ง Python และสคริปต์อยู่ในตัวแปรสภาพแวดล้อมเส้นทางของคุณจากนั้นรีสตาร์ทเทอร์มินัลของคุณและลองอีกครั้ง
Runmany ทำใน Python 3.9 บน Windows และได้รับการทดสอบอย่างละเอียดเกี่ยวกับ Python Version 3.6, 3.7, 3.8, 3.9 และ 3.10 บน Windows นอกจากนี้ยังควรทำงานได้ดีกับ Linux และ MacOS แต่ได้รับการทดสอบน้อยกว่าอย่างกว้างขวางในระบบปฏิบัติการเหล่านั้นโดยเฉพาะอย่างยิ่งเมื่อมันมาถึงคำสั่งที่เรียกใช้ล่าม/คอมไพเลอร์ของภาษาการเขียนโปรแกรมอื่น ๆ
Runmany อยู่ในเวอร์ชัน 2 พร้อมการปรับปรุง. MANY FILE SYNTAX และการตั้งค่าอื่น ๆ รุ่น 1.0.3 เก่ายังคงมีอยู่ใน PYPI
หากต้องการเรียกใช้ไฟล์ runmany ชื่อ myfile.many คนใช้คำสั่งเทอร์มินัล:
runmany myfile.many
นอกจากนี้ยังมีอาร์กิวเมนต์เสริมเพื่อขอความช่วยเหลือและระบุการตั้งค่าและไฟล์เอาต์พุต:
runmany [-h --help] [-s --settings <settings-file>] [-o --outfile <output-file>] <input-file>
<input-file> เป็นไฟล์ที่จำเป็นในการรัน<settings-file> เป็นไฟล์. json ที่เป็นตัวเลือกที่กำหนดวิธีการเรียกใช้ภาษาและวิธีการจัดรูปแบบผลลัพธ์<output-file> เป็นไฟล์เสริมในการส่งเอาต์พุตไป เมื่อละเว้นผลลัพธ์จะไปที่ stdout ตัวอย่างเช่นคำสั่งที่จะเรียกใช้ myfile.many หลายคนด้วยการตั้งค่า mysettings.json และส่งเอาต์พุตไปยัง myoutput.txt จะเป็น:
runmany -s mysettings.json -o myoutput.txt myfile.many
เมื่อไฟล์การตั้งค่าถูกระบุไว้ในบรรทัดคำสั่งส่วนการตั้งค่าใด ๆ ที่ฝังอยู่ในไฟล์อินพุตจะถูกละเว้น หากไม่มีอยู่หรือสำหรับการตั้งค่าที่ขาดหายไป default_settings.json จะใช้เป็นทางเลือก ดูข้อมูลเพิ่มเติมในการตั้งค่า
สำหรับตัวอย่างของไฟล์. จำนวนมากและเอาต์พุตของพวกเขาตรวจสอบโฟลเดอร์ตัวอย่างใน GitHub หรือ ManyChallenges repo ที่ความท้าทายรหัสต่าง ๆ สำหรับเว็บไซต์เช่น Project Euler ได้รับการแก้ไขในหลายภาษาในครั้งเดียว
ไม่จำเป็นต้องใช้ส่วนขยาย. many for runmany แต่แนะนำเพื่อความชัดเจน
Runmany สามารถนำเข้าและใช้จาก Python ได้ดังนี้:
from runmany import runmany , runmanys
# Run to stdout
runmany ( 'path/to/myfile.many' , 'path/to/mysettings.json' ) # settings JSON is always optional
# Run to output file
runmany ( 'path/to/myfile.many' , 'path/to/mysettings.json' , 'path/to/myoutput.txt' )
# Run to file object
with open ( 'path/to/myoutput.txt' , 'w' ) as output_file :
runmany ( 'path/to/myfile.many' , 'path/to/mysettings.json' , output_file )
# Run to string
output_string = runmanys ( 'path/to/myfile.many' , 'path/to/mysettings.json' )
print ( output_string ) ในทั้ง runmany.runmany และ runmany.runmanys ฟังก์ชั่น, from_string=True จะทำให้การโต้แย้งไฟล์. many ถูกตีความว่าเป็นสตริงแทนเส้นทางไฟล์และการตั้งค่าการตั้งค่า JSON อาจได้รับเป็นเส้นทางไปยังไฟล์. None หรือพจนานุกรม Python เช่นเดียวกับการรันจากบรรทัดคำสั่งการตั้งค่าที่นี่หมายถึงการตั้งค่าทั้งหมดที่ฝังอยู่ในไฟล์. many จะถูกละเว้น
ฟังก์ชั่น runmany.cmdline ซึ่งใช้รายการของอาร์กิวเมนต์บรรทัดคำสั่งยังมีอยู่เป็นทางเลือกในการใช้บรรทัดคำสั่งโดยตรง
รูปแบบไฟล์. many เป็นสิ่งที่ Runmany คาดหวังเมื่อให้ไฟล์เรียกใช้
ส่วนใหญ่ไฟล์. many ประกอบด้วยส่วนที่แต่ละตัวมีตัวอย่างหนึ่งตัวอย่างหรือมากกว่า ส่วนเริ่มต้นด้วยบรรทัดส่วนหัวที่ไม่มีใครแยกเช่น Python: หรือ Stdin for Python: จากนั้นเนื้อหาของตัวอย่างแรกคือสิ่งที่ปรากฏหลังจากลำไส้ใหญ่และในบรรทัดเยื้องด้านล่าง ตัวอย่างเพิ่มเติมอาจถูกเพิ่มเข้าไปในส่วนที่ไม่มีการแยกออกจาก Also: ส่วนหัวและส่วนจะสิ้นสุดลงเมื่ออันใหม่เริ่มต้นหรือ End. ที่ไม่มีการเข้าร่วม หรือถึงจุดสิ้นสุดของไฟล์
ไฟล์. many ทำงานจากบนลงล่างดำเนินการส่วนและตัวอย่างตามลำดับที่พวกเขาพบ โดยเฉพาะอย่างยิ่งไฟล์. many จะทำงานไม่ว่าจะมีข้อผิดพลาดทางไวยากรณ์หรือไม่ ไวยากรณ์ที่ไม่ถูกต้องใด ๆ จะถูกละเว้นและกล่าวถึงในข้อความแสดงข้อผิดพลาด
ในตัวอย่าง. ไฟล์จำนวนมากด้านล่าง Stdin for Python: ส่วนมีสองตัวอย่าง bar และ baz และพวกเขากลายเป็นอินพุตมาตรฐานสำหรับโปรแกรม Python ในส่วน Python: ซึ่งมีหนึ่งตัวอย่าง print('foo' + input()) การรันไฟล์นี้เรียกใช้โปรแกรม Python สองครั้งหนึ่งครั้งสำหรับ bar และอีกครั้งสำหรับ baz ให้ผลลัพธ์ที่เกี่ยวข้องกับ foobar และ foobaz
Stdin for Python:
bar
Also:
baz
End.
Python:
print('foo' + input())
End.
อ่านต่อไปสำหรับข้อมูลเฉพาะเกี่ยวกับไวยากรณ์ไฟล์. many ทั้งหมดหรือตรวจสอบ Syntax.Many ซึ่งมีตัวอย่างของไวยากรณ์ทั้งหมดเช่นกัน
%% เป็นอักขระที่ไม่ใช่ไวท์สเปซตัวแรกในบรรทัดแสดงความคิดเห็นจนกว่าจะสิ้นสุดบรรทัดนั้น
%% this is a comment
Python: %% this is not a comment
%% this is a comment
print(1) %% this is not a comment
ไม่มีความคิดเห็นบล็อกแม้ว่าการเริ่มต้นและหยุดจะอยู่ใกล้กับฟังก์ชันการทำงาน
ดังที่ได้กล่าวไว้ไฟล์. many ประกอบด้วยส่วนที่เริ่มต้นด้วยส่วนหัวและมีตัวอย่าง มีสี่ประเภท:
<language>: หรือ <language1>, <language2>, ...:Argv: หรือ Argv for <language1>, <language2>, ...:Stdin: หรือ Stdin for <language1>, <language2>, ...:Settings: ทั้งหมดยกเว้นส่วนการตั้งค่าสามารถมีรายการแยกเครื่องหมายจุลภาคของภาษาที่ใช้กับในส่วนหัว ภาษาเหล่านี้เมื่อถอดช่องว่างจะต้องตรงกับปุ่ม "name" ของภาษาในการตั้งค่า JSON แต่ไม่ละเอียดอ่อน (คำหลักเช่น "argv" และ "stdin" เป็น ตัวพิมพ์ใหญ่ภาษาภาษาที่กำหนดเองไม่ควรใช้คำหลัก runmany เป็นชื่อหรือมีอักขระ ,:%!@ .)
ส่วนหัว Also: ใช้เพื่อเพิ่มตัวอย่างลงในส่วนและ End. สามารถเลือกใช้เพื่อยุติส่วน
เนื้อหาของตัวอย่างคือข้อความหลังจากช่องว่างใด ๆ หลังจากลำไส้ใหญ่ ( : ในส่วนหัวของตัวอย่างรวมถึงบรรทัดทั้งหมดด้านล่างที่เยื้องด้วยแท็บเดียวหรือช่องว่าง 4 End. หรือสิ้นสุดไฟล์
ดังนั้นส่วนรหัสนี้
Python: import math
print(math.pi)
Also: print('pie')
print('cake')
มีสองตัวอย่างที่มีเนื้อหา:
import math
print ( math . pi ) print ( 'pie' )
print ( 'cake' )เส้นเปล่าด้านบนหรือด้านล่างมีไว้สำหรับการอ่านและไม่จำเป็น รหัสที่ไม่สม่ำเสมอนอกส่วนนั้นไม่ถูกต้อง
ส่วนโค้ดเริ่มต้นทันทีด้วยรายการภาษาที่คั่นด้วยเครื่องหมายจุลภาคและเนื้อหาตัวอย่างเป็นโปรแกรมที่จะทำงานในภาษาเหล่านั้น
ภาษาหนึ่งในรายการที่แยกจากเครื่องหมายจุลภาคนั้นเพียงพอเสมอเว้นแต่คุณจะเขียน Polyglots
JavaScript:
console.log('Some code that will be run in JavaScript.')
Python, Python 2:
print('Some code that will be run in Python 3 then Python 2.')
Also:
print('Some more code that will be run in Python 3 then Python 2.')
Also: ส่วนหัวตัวอย่างในส่วนรหัสเป็นชวเลขสำหรับการทำซ้ำส่วนส่วนหัว
Argv เป็นเวกเตอร์อาร์กิวเมนต์หรือที่รู้จักกันในนามข้อโต้แย้งบรรทัดคำสั่งที่ส่งไปยังโปรแกรม
ส่วน Argv สามารถเริ่มต้น Argv: เพื่อใช้กับทุกภาษาหรือ Argv for <language1>, <language2>, ...: เพื่อนำไปใช้กับภาษาในรายการที่คั่นด้วยเครื่องหมายจุลภาค ทั้งสองวิธีเขียนทับ ARGV ก่อนหน้านี้สำหรับภาษาเหล่านั้น
แต่ละตัวอย่างในส่วน Argv เป็น Argv แยกต่างหากที่จะส่งไปยังโปรแกรมของภาษาที่ส่วนที่ใช้กับ สิ่งนี้ทำให้ง่ายต่อการทดสอบ Argvs หลาย ๆ ครั้งในครั้งเดียว
Argv: argv sent to all languages
Argv for Python: 1
Also: 2
Also: 3
Python:
import sys
print(sys.argv[1])
รหัสนี้จะเรียกใช้โปรแกรม Python สามครั้งด้วย Argv 1 จากนั้น 2 จากนั้น 3
สำหรับ Argv ในการทำงานตัวยึดอันดับ $argv จะต้องวางอย่างถูกต้องลงในคำสั่งของภาษา
เกือบจะเหมือนกับส่วน Argv แต่สำหรับผู้ใช้สตรีมอินพุตมาตรฐานปกติพิมพ์ข้อความลงไป
ส่วน stdin สามารถเริ่มต้น Stdin: เพื่อนำไปใช้กับทุกภาษาหรือ Stdin for <language1>, <language2>, ...: เพื่อนำไปใช้กับภาษาในรายการที่คั่นด้วยเครื่องหมายจุลภาค ทั้งสองวิธีเขียนทับ stdin ก่อนหน้านี้สำหรับภาษาเหล่านั้น
แต่ละตัวอย่างในส่วน stdin เป็น stdin แยกต่างหากที่จะส่งไปยังโปรแกรมของภาษาที่ส่วนที่ใช้กับ สิ่งนี้ทำให้ง่ายต่อการทดสอบ stdins จำนวนมากในครั้งเดียว
Stdin: stdin sent to all languages
Stdin for Python: A
Also: B
Also: C
Python:
print(input())
รหัสนี้จะเรียกใช้โปรแกรม Python สามครั้งด้วย stdin A จากนั้น B จากนั้น C
เมื่อ Argvs และ stdins หลายภาษาใช้กับภาษาเดียวชุดค่าผสมที่เป็นไปได้ทั้งหมดของทุก ๆ argv และ stdin ทุกตัวจะถูกส่งไปยังโปรแกรมของภาษานั้น
ส่วนการตั้งค่าเริ่มต้นด้วย Settings: และอนุญาตให้ฝังการตั้งค่า JSON ในไฟล์. many ซึ่งใช้จนกว่าจะพบส่วนการตั้งค่าอื่น
การตั้งค่าแบบฝังตัวเหล่านี้จะใช้เฉพาะเมื่อการตั้งค่าไม่ได้ให้ไว้โดยเฉพาะเมื่อเรียกว่า Runmany การตั้งค่าที่หายไปใด ๆ เริ่มต้นกับค่าของพวกเขาใน default_settings.json
Settings:
{ "show_code": true }
Python:
print('this Python code will now be shown as part of the output')
สามารถใช้สตริง JSON ของพา ธ ไปยังไฟล์การตั้งค่าเช่น Settings: "path/to/mysettings.json"
Also: ส่วนหัวตัวอย่างในส่วนการตั้งค่าเป็นชวเลขสำหรับการทำซ้ำส่วนส่วนหัว ดังนั้นพวกเขาจึงไม่ตอบสนองวัตถุประสงค์มากนักเนื่องจากพวกเขาเขียนทับการตั้งค่าก่อนหน้านี้ทันที
วาง !! ในช่วงเริ่มต้นของส่วนหัวส่วนปิดใช้งานส่วนทั้งหมดและตัวอย่างทั้งหมด
ใส่ ! ในช่วงเริ่มต้นของส่วนหัวตัวอย่างปิดใช้งานตัวอย่างนั้น
!!Python:
print('this is disabled')
Also:
print('this is also disabled')
!Python:
print('this is disabled')
Also:
print('this is not disabled')
!Also:
print('this is disabled')
หากส่วนหัวส่วนใดส่วนหนึ่งเริ่มต้นด้วย @@ นั้นเฉพาะส่วนเหล่านั้นจะทำงานคล้ายกับช่องทำเครื่องหมาย "เดี่ยว" ในซอฟต์แวร์แก้ไขเสียง/วิดีโอ
หากส่วนหัวตัวอย่างใด ๆ ภายในส่วนเริ่มต้นด้วย @ นั้นจะมีเฉพาะตัวอย่างเหล่านั้นเท่านั้นที่จะทำงานเมื่อส่วนทำงาน
@@@Python:
print('this is run')
Also:
print('this is not run')
@Also:
print('this is run')
Python:
print('this is not run')
@Also:
print('this is also not run')
โปรดทราบว่าบรรทัดแรกมีสาม @@@ สองคนที่จะเดี่ยวส่วนและอีกบรรทัดหนึ่งเพื่อเดี่ยวตัวอย่างแรกของมัน
ทุกอย่างก่อน START: ในช่วงเริ่มต้นของบรรทัดด้วยตัวเองในไฟล์. many จะถูกละเว้น
ทุกอย่างหลังจาก STOP. ครั้งแรก ในช่วงเริ่มต้นของบรรทัดด้วยตัวเองในไฟล์. many จะถูกละเว้น
ดังนั้นเฉพาะส่วน JavaScript ของไฟล์. many นี้จะเรียกใช้:
Python: print('unseen')
START:
JavaScript: console.log('seen')
STOP.
Python: print('unseen')
ควรมี START: และ STOP. หนึ่งครั้ง ในไฟล์. many
การตั้งค่าของ Runmany ถูกกำหนดโดยไฟล์ JSON ที่สามารถให้ได้เมื่อ Runmany ถูกเรียกหรือฝังโดยตรงในไฟล์. many
การตั้งค่า JSON กำหนดว่าภาษา Runmany สามารถทำงานได้อย่างไรและจะเรียกใช้งานได้อย่างไร นอกจากนี้ยังกำหนดวิธีการจัดรูปแบบ Runmany Output
ไฟล์ default_settings.json ถือค่าเริ่มต้นสำหรับการตั้งค่าทั้งหมด ค่าเริ่มต้นเหล่านี้จะถูกใช้โดยอัตโนมัติหากไม่ได้อยู่ในการตั้งค่าที่ให้ไว้หรือฝังตัว JSON
การตั้งค่าส่วนใหญ่เป็นแฟล็กหรือค่าง่าย ๆ ที่สามารถตั้งค่าในวัตถุการตั้งค่าพื้นฐาน JSON เพื่อใช้งานทั่วโลก (ดูรายการการตั้งค่า) แต่สี่ปุ่มพิเศษใน JSON ใช้เพื่อปรับแต่งภาษา Runmany สามารถเรียกใช้หรือเพิ่มภาษาเพิ่มเติม เหล่านี้คือ "languages" , "languages_windows" , "languages_linux" และ "languages_mac" ( "languages_<os>" จะถูกนำมาใช้เพื่ออ้างถึงสามครั้งสุดท้าย) พวกเขาเป็นอาร์เรย์ของวัตถุ JSON ระดับเดียวที่ระบุการตั้งค่าสำหรับภาษาที่ตรงกับคีย์ "name" ของวัตถุ
อาร์เรย์ "languages_<os>" ที่ตรงกับระบบระบบปฏิบัติการมีลำดับความสำคัญสูงสุดเมื่อพิจารณาการตั้งค่าภาษาตามด้วยอาร์เรย์ "languages" ตามด้วยอาร์เรย์ "supplied_languages_<os>" และ "supplied_languages" ในตัว (ไม่ควรตั้งค่าอาร์เรย์ "supplied_languages..." เหล่านี้ในการตั้งค่าของคุณ json) ภาษาใช้การตั้งค่าในวัตถุฐาน JSON เป็นทางเลือกสุดท้าย
ตัวอย่างเช่นการตั้งค่าต่อไปนี้ JSON ตั้งค่าการตั้งค่า "show_code" (ซึ่งเป็นเท็จโดยค่าเริ่มต้น) เป็นจริงสำหรับทุกภาษายกเว้น Python และ Python 2 นอกจากนี้ยังสร้างภาษาใหม่ "Python 3.10" ที่สามารถใช้ในส่วนส่วนหัวไฟล์จำนวนมากบน Windows
{
"show_code" : true ,
"languages" : [
{ "name" : " Python " , "show_code" : false },
{ "name" : " Python 2 " , "show_code" : false }
],
"languages_windows" : [
{ "name" : " Python 3.10 " , "extension" : " .py " , "command" : " py -3.10 " }
]
} จำเป็นต้องใช้คีย์ "name" สำหรับทุกวัตถุในอาร์เรย์ภาษาและควรจัดเตรียมคีย์ "command" และ "extension" ไว้สำหรับภาษาที่กำหนดเองใหม่เสมอ ไม่ใช่ทุกการตั้งค่าที่เหมาะสมที่จะนำไปใช้เป็นภาษาต่อภาษา ตัวอย่างเช่น "show_equal" ใช้กับการรันของไฟล์. many โดยรวมดังนั้นมันจึงเหมาะสมในวัตถุฐาน JSON เท่านั้น
การตั้งค่าทั้งหมดที่อธิบายและไม่ว่าพวกเขาจะถูกแทนที่ด้วยภาษาต่อภาษาใน "languages" และ "languages_<os>" วัตถุอาร์เรย์:
| คีย์ JSON | พิมพ์ | ค่าเริ่มต้น | ใช้งานได้ | คำอธิบาย |
|---|---|---|---|---|
"command" | สาย | "echo NOCOMMAND" | ใช่ | คำสั่งคอนโซลเพื่อเรียกใช้ภาษาตามรูปแบบคำสั่ง |
"extension" | สาย | "" | ใช่ | ส่วนขยายไฟล์ของภาษารวมถึง DOT |
"timeout" | ลอย | 10.0 | ใช่ | ขีด จำกัด เวลาของแต่ละโปรแกรมในไม่กี่วินาทีหรือ null โดยไม่ จำกัด เวลา |
"runs" | int | 1 | ใช่ | จำนวนครั้งที่แต่ละโปรแกรมทำงาน เฉพาะผลลัพธ์ของการรันสุดท้ายเท่านั้นที่แสดง |
"stderr" | สาย | "smart" | ใช่ | "yes" / true เพื่อรวมโปรแกรม stderr เข้ากับ stdout "no" / false เพื่อซ่อนโปรแกรม Stderr "smart" / null เพื่อแสดงเฉพาะ stderr เมื่อโปรแกรมมีรหัสทางออกที่ไม่เป็นศูนย์ |
"spacing" | int | 1 | ใช่ | จำนวนบรรทัดว่างที่จะเพิ่มหลังจากการรันแต่ละครั้ง |
"newline" | สาย | "n" | ใช่ | สิ่งที่ใหม่จะถูกแทนที่ด้วยเนื้อหารหัส argv และ stdin หรือ null สำหรับค่าเริ่มต้นของ OS |
"tab" | สาย | "t" | ใช่ | สิ่งที่อักขระแท็บถูกแทนที่ด้วยในรหัสเนื้อหา argv และ stdin ตัวอย่าง |
"cwd" | สาย | null | ใช่ | ไดเรกทอรีการทำงานปัจจุบันเพื่อเรียกใช้โปรแกรมจาก อาจเป็นเส้นทางที่สัมพันธ์กัน ใช้ null หรือ "." เพราะไม่มีการเปลี่ยนแปลงไดเรกทอรีการทำงานปัจจุบัน |
"minimalist" | บูล | false | เลขที่ | ไม่ว่าจะแสดงเอาต์พุตทั้งหมดในรูปแบบขั้นต่ำที่ตัวแบ่ง, รหัส, argv และ stdin จะไม่ปรากฏขึ้น |
"run_blanks" | บูล | false | เลขที่ | ไม่ว่าจะเป็นตัวอย่างที่ว่างเปล่าที่ประกอบด้วยช่องว่างหรือไม่ถูกละเว้น |
"show_time" | บูล | false | ใช่ | ไม่ว่าจะแสดงเวลาในการดำเนินการหรือไม่ มีประโยชน์สำหรับการทดสอบประสิทธิภาพเมื่อรวมกับ "runs" |
"show_command" | บูล | false | ใช่ | ไม่ว่าจะเป็นคำสั่งที่ใช้ในการเรียกใช้แต่ละโปรแกรมหรือไม่ มีประโยชน์สำหรับการดีบักคำสั่งสำหรับภาษาใหม่ |
"show_code" | บูล | false | ใช่ | ไม่ว่าจะแสดงซอร์สโค้ดของโปรแกรมหรือไม่ |
"show_argv" | บูล | true | ใช่ | ไม่ว่าจะเป็น ARGV สำหรับโปรแกรม (เมื่อมีอยู่) |
"show_stdin" | บูล | true | ใช่ | ไม่ว่าจะเป็น stdin สำหรับโปรแกรม (เมื่อมีอยู่) |
"show_output" | บูล | true | ใช่ | ไม่ว่าจะแสดงผลลัพธ์สำหรับโปรแกรมหรือไม่ ซึ่งรวมถึง stdout และขึ้นอยู่กับ "stderr" , stderr |
"show_runs" | บูล | true | เลขที่ | ไม่ว่าจะแสดงรายการของการรันหรือไม่ นี่เป็นจำนวนมากของเอาต์พุต |
"show_stats" | บูล | true | เลขที่ | ความสำเร็จและความล้มเหลวจะแสดงหลังจากทุกอย่างทำงาน |
"show_equal" | บูล | true | เลขที่ | ไม่ว่าจะเป็นการเปรียบเทียบและจัดกลุ่มหลังจากทุกอย่างทำงานหรือไม่ |
"show_errors" | บูล | true | เลขที่ | ไม่ว่าจะเป็นข้อผิดพลาดของ Runmany เช่น ` |
"strip_argv" | สาย | "smart" | เลขที่ | "yes" / true เพื่อตัดเนื้อหาตัวอย่างของช่องว่างชั้นนำและต่อท้าย "no" / false เพื่อรักษาเนื้อหาตัวอย่างตามที่เป็นอยู่ "smart" / null เพื่อเข้าร่วมทุกบรรทัดในตัวอย่างพร้อมกับช่องว่างราวกับว่าพวกเขาอยู่ในบรรทัดเดียว |
"strip_stdin" | สาย | "smart" | เลขที่ | "yes" / true เพื่อตัดการเริ่มต้นและจุดสิ้นสุดของตัวอย่างของเส้นช่องว่างเท่านั้น "no" / false เพื่อรักษาเนื้อหาตัวอย่างตามที่เป็นอยู่ "smart" / null เพื่อทำเช่นเดียวกับ "yes" / true แต่ยังผนวกสายใหม่เดียว |
"strip_code" | สาย | "smart" | ใช่ | "yes" / true เพื่อตัดการเริ่มต้นและจุดสิ้นสุดของตัวอย่างของเส้นช่องว่างเท่านั้น "no" / false เพื่อรักษาเนื้อหาตัวอย่างตามที่เป็นอยู่ "smart" / null เพื่อรักษาส่วนบนของไฟล์. many เป็นจุดเริ่มต้นของตัวอย่างรหัสที่มีชิ้นส่วนที่ไม่เกี่ยวข้องทั้งหมดว่างเปล่าดังนั้นข้อผิดพลาดในโปรแกรมรายงานหมายเลขบรรทัดที่ถูกต้อง |
"strip_output" | สาย | "no" | ใช่ | "yes" / true เพื่อดึงเอาท์พุทโปรแกรมของช่องว่างชั้นนำและต่อท้าย "no" / false เพื่อออกจากการส่งออกโปรแกรมตามที่เป็นอยู่ "smart" / null เพื่อตัดเอาต์พุตโปรแกรมของสายนำและสายที่ว่างเปล่า |
ควรกล่าวถึงว่ารหัส, Argv และ stdin ส่วนหนึ่งของไฟล์. many ถูกถอดออกจากบรรทัดที่ว่างเปล่าเพื่อให้สิ่งต่าง ๆ สะอาดโดยไม่คำนึงถึงค่าของ "strip_code" , "strip_argv" และ "strip_stdin"
คีย์ "command" ของวัตถุใน "languages" หรือ "languages_<os>" อาร์เรย์กำหนดคำสั่งเทอร์มินัลที่เรียกใช้เพื่อเรียกใช้ภาษานั้น
ตัวยึดสถานที่เช่น $file และ $dir สามารถใช้ในคำสั่งเพื่ออ้างถึงไฟล์ชั่วคราว Runmany สร้างสำหรับรหัสของแต่ละโปรแกรมที่ทำงานและไดเรกทอรีที่เก็บไว้ในไฟล์:
| ผู้ถือครองตำแหน่ง | ส่วนของ .../dir/file.ext |
|---|---|
$rawdir | .../dir |
$dir | ".../dir" |
$rawfile | .../dir/file.ext |
$file | ".../dir/file.ext" |
$rawbranch | .../dir/file |
$branch | ".../dir/file" |
$name | file.ext |
$stem | file |
$ext | .ext |
$sep | / (เฉพาะระบบปฏิบัติการ) |
$argv | n/a - argv ถูกแทรกที่นี่ |
$code | N/A - เนื้อหาตัวอย่างดิบ |
โปรดทราบว่าสถานที่บางตัวเป็น "ที่ยกมา" และบางคนไม่ได้ ระบบปฏิบัติการบางอย่างเช่น Windows อาจมีช่องว่างในเส้นทางไปยังไฟล์ชั่วคราวดังนั้นการเสนอราคาที่ถูกต้องจึงเป็นสิ่งสำคัญ
หาก $ ไม่ได้อยู่ที่ใดก็ได้ในสตริงคำสั่ง $file $argv จะถูกผนวกเข้ากับมัน ตัวอย่างเช่น python คำสั่งคือ python $file $argv โดยปริยาย
ตรวจสอบอาร์เรย์ "supplied_languages" ใน default_settings.json สำหรับตัวอย่างเพิ่มเติมของคำสั่ง
ฉันถูกผลักดันให้ทำ Runmany ด้วยความปรารถนาที่จะเรียนรู้ภาษาการเขียนโปรแกรมเพิ่มเติมรวมกับความรำคาญของฉันว่าเมื่อใดก็ตามที่ฉันลองฉันจะต้องสร้างโครงการใหม่ทั้งหมดสำหรับภาษานั้นหรือแม้แต่เปลี่ยน IDEs
ฉันวางแผนที่จะใช้มันเพื่อฝึกการแก้ปัญหาความท้าทายในหลายภาษาจากเว็บไซต์เช่น Project Euler
ตรวจสอบแพ็คเกจ Python อื่น ๆ ของฉัน