mystic-yard 2.0.4 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler.js +53 -43
- package/package.json +1 -1
package/compiler.js
CHANGED
|
@@ -1,54 +1,64 @@
|
|
|
1
1
|
const fs = require('fs');
|
|
2
2
|
const path = require('path');
|
|
3
|
-
const
|
|
4
|
-
const parser = require("./compiler/parser");
|
|
5
|
-
const writer = require("./compiler/writer");
|
|
6
|
-
|
|
7
|
-
// ফাইল কম্পাইল করার মূল লজিক (যা আপনার আগের কোডেই ছিল)
|
|
8
|
-
function compileFiles() {
|
|
9
|
-
console.log("\n🔄 ফাইল পরিবর্তন সনাক্ত হয়েছে! কম্পাইল করা হচ্ছে...");
|
|
10
|
-
|
|
11
|
-
try {
|
|
12
|
-
const files = scanner();
|
|
13
|
-
|
|
14
|
-
for (const file of files) {
|
|
15
|
-
console.log("Reading:", file.name);
|
|
16
|
-
console.log("Code:", file.code);
|
|
3
|
+
const { exec } = require('child_process'); // JS ফাইল রান করার জন্য
|
|
17
4
|
|
|
18
|
-
|
|
19
|
-
console.log("Tokens:", tokens);
|
|
5
|
+
const directoryPath = './src'; // আপনার সোর্স ফোল্ডার
|
|
20
6
|
|
|
21
|
-
|
|
22
|
-
|
|
7
|
+
// JS ফাইল টার্মিনালে রান করার ফাংশন
|
|
8
|
+
function runJsFile(jsFile) {
|
|
9
|
+
const jsFilePath = path.join(directoryPath, jsFile);
|
|
23
10
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
11
|
+
// টার্মিনালে স্বয়ংক্রিয়ভাবে 'node src/filename.js' কমান্ডটি রান করবে
|
|
12
|
+
exec(`node "${jsFilePath}"`, (error, stdout, stderr) => {
|
|
13
|
+
console.log(`\n--- Output of ${jsFile} ---`);
|
|
14
|
+
|
|
15
|
+
if (error) {
|
|
16
|
+
console.error(`❌ রান করতে এরর হয়েছে: ${error.message}`);
|
|
17
|
+
return;
|
|
31
18
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
19
|
+
if (stderr) {
|
|
20
|
+
console.error(`⚠️ স্ট্যানডার্ড এরর: ${stderr}`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// ফাইলের আসল আউটপুট টার্মিনালে প্রিন্ট হবে
|
|
25
|
+
console.log(stdout || '(কোনো আউটপুট নেই)');
|
|
26
|
+
console.log("-".repeat(25));
|
|
27
|
+
});
|
|
36
28
|
}
|
|
37
29
|
|
|
38
|
-
//
|
|
39
|
-
|
|
30
|
+
// নাম মিলিয়ে অটো-কানেক্ট এবং রান করার মেইন ফাংশন
|
|
31
|
+
function startCompiler() {
|
|
32
|
+
try {
|
|
33
|
+
if (!fs.existsSync(directoryPath)) {
|
|
34
|
+
console.error(`❌ ডিরেক্টরি পাওয়া যায়নি: ${directoryPath}`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const files = fs.readdirSync(directoryPath);
|
|
39
|
+
const myFiles = files.filter(file => file.endsWith('.my'));
|
|
40
|
+
const jsFiles = files.filter(file => file.endsWith('.js'));
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
// এটি আপনার বর্তমান প্রজেক্টের ফোল্ডারটিকে সারাক্ষণ পাহারা দেবে
|
|
43
|
-
console.log("👀 লাইভ ওয়াচ মোড চালু হয়েছে... আপনার .my ফাইলে কোড লিখে সেভ করুন।");
|
|
42
|
+
console.log("🔍 ফাইল স্ক্যান করা হচ্ছে...");
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
44
|
+
myFiles.forEach(myFile => {
|
|
45
|
+
const baseName = path.basename(myFile, '.my');
|
|
46
|
+
const matchingJsFile = `${baseName}.js`;
|
|
47
|
+
|
|
48
|
+
if (jsFiles.includes(matchingJsFile)) {
|
|
49
|
+
console.log(`🔗 কানেক্টেড: ${myFile} -> ${matchingJsFile}`);
|
|
50
|
+
|
|
51
|
+
// ম্যাচ হওয়া JS ফাইলটিকে রান করা হচ্ছে
|
|
52
|
+
runJsFile(matchingJsFile);
|
|
53
|
+
} else {
|
|
54
|
+
console.warn(`⚠️ সতর্কতা: '${myFile}' এর জন্য কোনো '${baseName}.js' পাওয়া যায়নি।`);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
} catch (error) {
|
|
59
|
+
console.error("কম্পাইলার রান করতে সমস্যা হয়েছে:", error);
|
|
53
60
|
}
|
|
54
|
-
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// কম্পাইলার স্টার্ট করুন
|
|
64
|
+
startCompiler();
|