From 3c52e0f146b9fd85ada5d59b229dbeec287a7f20 Mon Sep 17 00:00:00 2001 From: Felienne Date: Sun, 12 Sep 2021 20:05:59 +0200 Subject: [PATCH] adds Hindi levels 1 to 7 (#740) --- app.py | 3 +- coursedata/level-defaults/bn.yaml | 2 +- coursedata/level-defaults/hi.yaml | 151 ++++++++++++++++++++++++++++++ grammars/level1.lark | 5 +- 4 files changed, 156 insertions(+), 5 deletions(-) create mode 100644 coursedata/level-defaults/hi.yaml diff --git a/app.py b/app.py index cc077578f66..7c392377ffe 100644 --- a/app.py +++ b/app.py @@ -50,7 +50,8 @@ 'el': 'Ελληνικά', 'zh': "简体中文", 'cs': 'Čeština', - 'bn': 'বাংলা' + 'bn': 'বাংলা', + 'hi': 'हिंदी' } LEVEL_DEFAULTS = collections.defaultdict(courses.NoSuchDefaults) diff --git a/coursedata/level-defaults/bn.yaml b/coursedata/level-defaults/bn.yaml index 2f5fc1cddf1..f18c8747028 100644 --- a/coursedata/level-defaults/bn.yaml +++ b/coursedata/level-defaults/bn.yaml @@ -34,7 +34,7 @@ explanation: "Choose a random word from a group with `at` and `random`" example: "উদাহরণ: প্রাণী হল কুকুর বিড়াল ক্যাঙ্গারু" demo_code: | - প্রাণী is হল কুকুর বিড়াল ক্যাঙ্গারু + প্রাণী is হল, কুকুর, বিড়াল, ক্যাঙ্গারু print প্রাণী at random 3: start_code: "print 'হ্যালো বিশ্ব !'" diff --git a/coursedata/level-defaults/hi.yaml b/coursedata/level-defaults/hi.yaml new file mode 100644 index 00000000000..df8c7895543 --- /dev/null +++ b/coursedata/level-defaults/hi.yaml @@ -0,0 +1,151 @@ +1: + intro_text: "हेडी मे आपका स्वागत है! स्तर 1 में आप ‘print’, 'ask’ और 'echo’ जैसे आदेशों का उपयोग कर सकते है। नीले बटन को दबाने से आपका कोड आपके लिये टाइप हो जाएगा। अब प्रोग्रामिंग क्षेत्र में नीचे बाएं जाकर हरे बटन “रन द कोड दबाएं ।" + start_code: "print हेलो दुनिया!" + commands: + - name: "print" + explanation: "’print’ का इस्तेमाल करके कुछ छापो" + example: "उदाहरण: print हेलो हेडी में आपका स्वागत है!" + demo_code: "print हेलो हेडी में आपका स्वागत है!" + - name: "ask" + explanation: "‘ask’ का इस्तेमाल करके कुछ पूछो। " + example: "उदाहरण: ask आपका पसंदीदा रंग कौन सा है?" + demo_code: "ask आपका पसंदीदा रंग कौन सा है?" + - name: "echo " + explanation: "’echo’ का इस्तेमाल करके कुछ दोहराओ।" + example: "उदाहरण: echo तो आपका पसंदीदा रंग है..." + demo_code: | + ask आपका पसंदीदा रंग कौन सा है? + echo तो आपका पसंदीदा रंग है... +2: + intro_text: "print वैसे ही काम करेगा जैसे स्तर १ में किया, लेकिन ask बदल गया है और अब उसको किसी नाम की ज़रूरत है, जो कि आप print कर सकते हैं| echo की अब कोई ज़रूरत नहीं है| अब आप इन आदेशों का भी इस्तेमाल कर सकते हैं:" + start_code: "print हेलो दुनिया !" + commands: + - name: "is" + explanation: | + एक शब्द को नाम दीजिए जो उस प्रोग्राम में उपयोग हो सके जिस में + ‘is‘ का इस्तेमाल हो रहा हो| + example: "उदाहरण : नाम is हेडी|" + demo_code: "नाम is हेडी\nprint नाम का स्वागत है|" + - name: "ask " + explanation: "‘ask’ का इस्तेमाल करके कुछ पूछो| खबरदार! आपको अब उत्तर का नाम ‘is’ से देना है|" + example: "उदाहरण : रंग is ask आपका पसंदीदा रंग क्या है?" + demo_code: | + रंग is ask आपका पसंदीदा रंग क्या है? + print रंग आपका पसंदीदा है!" + - name: "choose_random" + explanation: "एक समूह से एक क्रमरहित शब्द चुनें जो `at` और `random` का इस्तेमाल करें" + example: "उदाहरण: जानवर है कुत्ता, बिल्ली, कंगेरू" + demo_code: | + जानवर is कुत्ता, बिल्ली, कंगेरू + print जानवर at random +3: + start_code: "print 'हेलो दुनिया'" + intro_text: "`ask` अभी भी स्तर ३ में बिल्कुल वैसा ही है, लेकिन ‘print’ अब अलग है| जो भी टेक्स्ट आपको ‘print’ करवाना है उसको दोहरा उदाहरण चिन्ह में रखना होगा| " + commands: + - name: "print" + explanation: "इकहरा उदाहरण चिन्ह का इस्तेमाल करके सटीक प्रिंट कीजिए " + example: "उदाहरण : print 'हेडी में आपका स्वागत है|'" + demo_code: "print 'हेडी में आपका स्वागत है|'" + - name: "is" + explanation: " किसी टेक्स्ट को कुछ नाम दीजिए और ‘प्रिंट’ करवाएं बिना इकहरा उदाहरण चिन्ह के" + example: "उदाहरण: नाम is हेडी|" + demo_code: | + नाम is हेडी + print 'मेरा नाम is ' नाम + - name: "ask " + explanation: "‘ask’ का इस्तेमाल करके कुछ पूछो!" + example: "उदाहरण: रंग is ask आपका पसंदीदा रंग कौनसा है?" + demo_code: | + रंग is ask 'आपका पसंदीदा रंग कोनसा है?' + print रंग ' आपका पसंदीदा है!' +4: + start_code: "नाम is ask आपका नाम क्या है?\nif नाम is हेडी print 'कूल!' else print 'मेह'" + intro_text: "`ask` और `print` दोनों बिल्कुल वैसा ही काम करते है जैसा स्तर ३ में किया था| स्तर ४ में ‘if’ आदेश जुड़ा है|" + commands: + - name: "print" + explanation: "इकहरा उदाहरण चिन्ह का इस्तेमाल करके सटीक प्रिंट कीजिए" + example: "उदाहरण : print 'हेलो हेडी में आपका स्वागत है|'" + demo_code: "print 'हेलो हेडी में आपका स्वागत है|'" + - name: "ask" + explanation: "‘ask’ का इस्तेमाल करके कुछ पूछो" + example: "उदाहरण : रंग is ask 'आपका पसंदीदा रंग कोनसा है?'" + demo_code: "रंग is ask 'आपका पसंदीदा रंग कोनसा है?'\nprint रंग ' आपका पसंदीदा है!'" + - name: "if" + explanation: "अपनी पसंद बनाइये ’if’ का इस्तेमाल करके" + example: "उदाहरण: if रंग हरा है तो print ‘सुन्दर!’ else print ‘मेह’" + demo_code: | + रंग is ask 'पसंदीदा रंग कौन सा है?' + if रंग is हैतो print 'सुन्दर!' else print 'मेह' +5: + start_code: "repeat 3 times print 'हेडी मजेदार है!'" + intro_text: "`ask`, `print` और `if` वैसे ही काम करते है जैसा स्तर ४ में करते थे| लेकिन स्तर ५ में ‘repeat’ आदेश जुड़ जाता है| repeat एक कोड की लाइन को बहुत बार निष्पादित करने के काम आता है|" + commands: + - name: "print" + explanation: "इकहरा उदहारण चिन्ह का इस्तेमाल करके सटीक प्रिंट कीजिए" + example: "उदाहरण : print 'हेलो हेडी में आपका स्वागत है|'" + demo_code: "print 'हेलो हेडी में आपका स्वागत है|'" + - name: "ask" + explanation: "‘ask’ का इस्तेमाल करके कुछ पूछिए " + example: "उदाहरण : रंग is ask 'आपका पसंदीदा रंग कौनसा है?'" + demo_code: "रंग is ask 'आपका पसंदीदा रंग कौनसा है?'\nprint रंग ' आपका पसंदीदा है!'" + - name: "if" + explanation: "अपनी पसंद बनाइये ’if’ का इस्तेमाल करके" + example: "उदाहरण: if रंग हरा है तो print ‘सुन्दर!’ else print ‘मेह’" + demo_code: | + रंग is ask 'आपका पसंदीदा रंग कौन सा है?' + if रंग is हरा print 'सुन्दर!' else print 'मेह' + - name: "repeat" + explanation: "`repeat` और `if` एक साथ" + example: "उदाहरण: if रंग is हरा repeat ३ बार print 'सुन्दर!’ else repeat ५ बार print 'मेह’" + demo_code: | + रंग is ask 'पसंदीदा रंग कौन सा है?' + if रंग is हरा repeat 3 times print 'सुन्दर!' else repeat 4 times print 'मेह' +6: + start_code: "print '५ गुणा ५ है ' 5 * 5" + intro_text: "`ask`, `print`, `if` और `repeat` वैसे ही हैं जैसे स्तर ४ और ५ में हैं| स्तर ६ में कुछ नया है ... अब आप हिसाब कर सकते हैं|" + commands: + - name: "print" + explanation: "बिलकुल वैसा ही छापने के लिए इकहरा उदाहरण चिन्ह इस्तेमाल करें" + example: "उदाहरण: print '५ गुणा ५ है ' 5 * 5" + demo_code: "print '५ गुणा ५ है ' 5 * 5" + - name: "`ask` और `if` हिसाब के साथ" + explanation: "हिसाब के लिए पूछें और जांचें कि वह सही है।" + example: "उदाहरण: उत्तर is ask '१० जमा १० क्या होता है?'" + demo_code: "उत्तर is ask '१० जमा १० क्या है?'\nif उत्तर is २० print 'हाँ!' else print 'उफ़'" + - name: "repeat" + explanation: "`repeat` और `if` एक साथ " + example: "उदाहरण: if रंग is हरा repeat ३ बार print 'सुंदर!' else repeat 5 times print 'मेह'" + demo_code: "रंग is ask 'आपका पसंदीदा रंग कोनसा है?'\nif रंग is हरा repeat 3 times print 'सुन्दर' else repeat 5 times print 'मेह'" +7: + start_code: | + repeat 5 times + print 'हेलो दोस्तों' + print 'ये सब ५ बार प्रिंट होंगे' + intro_text: "ask और print दोनों वैसा ही काम करेंगे जैसे हमें पता है|लेकिन if और repeat बदल चुके है! अब आप एक साथ कोड के समूहों को चला सकते हैं, लेकिन आपको कोड को इंडेंट करना होगा| इसका मतलब है कि लाइन की शुरुआत में चार रिक्त स्थान डालने होंगे |यह तब भी लागू होगा जब आप केवल एक पंक्ति का एक ब्लॉक बनाना चाहते हैं| यदि आप एक repeat और if को जोड़ते हैं, तो आपको प्रत्येक ब्लॉक को इंडेंट करना होगा| अधिक जानकारी के लिए उदाहरण कोड पर एक नज़र डालें!" + commands: + - name: "print" + explanation: "कुछ छापो| बिलकुल वैसा ही छापने के लिए इकहरा उदाहरण चिन्ह इस्तेमाल करें|" + example: "उदाहरण: print '५ बार ५ है' 5 * 5" + demo_code: "print '५ बार ५ है' 5 * 5" + - name: "`if` बहुत सारी लाइनों के साथ" + explanation: " एक जमा के लिए उत्तर पूछें और जांचें कि क्या यह सही है। अब हम दो लाइनों को print कर सकते हैं।" + example: "उदाहरण: उत्तर is ask '५ जमा ५ क्या है?'" + demo_code: | + उत्तर is ask '५ जमा ५ क्या है?' + if उत्तर is १० + print 'शाबाश!!' + print 'वास्तव में जवाब था ' उत्तर + else + print 'उफ़!' + print 'जवाब है १०' + - name: "if और repeat एक साथ" + explanation: "`if` और `repeat` एक साथ" + example: "उदाहरण: if रंग is हरा repeat 3 times print ‘सुंदर!’ else repeat ५ बार print ‘मेह’" + demo_code: | + रंग is ask 'आपका पसंदीदा रंग कोनसा है?' + if रंग is हरा + repeat 3 times + print 'सुंदर!' + else + repeat 5 times + print 'मेह' diff --git a/grammars/level1.lark b/grammars/level1.lark index 8d0eadfd2dd..b8beb52c43a 100644 --- a/grammars/level1.lark +++ b/grammars/level1.lark @@ -88,9 +88,8 @@ textwithoutspaces: /([^\n *+-\/]+)/ -> text //anything can be parsed except for %import common.NEWLINE %import common.SIGNED_INT -> NUMBER -// FH Sept 2021: Frankly I have no clue what any of this means but they are Python compliant var names (aka include unicode) -// this allows for var names in non-Latin names like Chinese and Bengali -// stolen from: https://lark-parser.readthedocs.io/en/latest/classes.html +// FH Sept 2021: More info on this variable format: https://www.unicode.org/reports/tr31/tr31-1.html +// Exact grammar stolen from: https://lark-parser.readthedocs.io/en/latest/classes.html NAME: ID_START ID_CONTINUE* ID_START: /[\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}_]+/