در این مطلب، ویدئو 2018 – زبان برنامه نویسی خود را بسازید – تجزیه کننده (2/3) با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:06:23
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:01,500
بنابراین آخرین ویدیویی که یاد گرفتیم
2
00:00:01,500 –> 00:00:03,240
سخنرانی چیست و یاد گرفتیم که چگونه
3
00:00:03,240 –> 00:00:05,790
برای تولید نشانهها کار میکند در این ویدیو در
4
00:00:05,790 –> 00:00:07,379
مورد تجزیهکننده خود یاد میگیریم و
5
00:00:07,379 –> 00:00:08,910
کاری که تجزیهکننده ما انجام میدهد این است که
6
00:00:08,910 –> 00:00:10,950
نشانهها را به ترتیبی که به آنها داده
7
00:00:10,950 –> 00:00:12,960
میشود میگیرد. از ترتیب استفاده میکند تا بفهمد آیا
8
00:00:12,960 –> 00:00:14,820
نشانهها واقعاً معنی دارند یا خیر، برای
9
00:00:14,820 –> 00:00:16,590
مثال، من یک نشانه if
10
00:00:16,590 –> 00:00:18,690
و سپس یک نشانه فلش مستقیماً بعد از
11
00:00:18,690 –> 00:00:19,920
آن ندارم، زیرا در زبان ما
12
00:00:19,920 –> 00:00:21,689
معنایی ندارد تجزیهکننده باید
13
00:00:21,689 –> 00:00:24,060
بفهمد که آیا زبان با گرامر ما مطابقت
14
00:00:24,060 –> 00:00:25,769
دارد اگر به کاربر خطایی ندهد
15
00:00:25,769 –> 00:00:27,810
و اگر این کار را کرد، درخت تجزیه خود را ایجاد می کنیم
16
00:00:27,810 –> 00:00:29,640
که می توانیم از آن برای
17
00:00:29,640 –> 00:00:31,590
اجرای برنامه خود استفاده کنیم، بنابراین اولین کاری که انجام می دهیم این است
18
00:00:31,590 –> 00:00:34,110
که کلاس تجزیه کننده slice را وارد می کنیم سپس به
19
00:00:34,110 –> 00:00:35,850
پایین اسکرول می کنیم. و کلاس خود را
20
00:00:35,850 –> 00:00:38,190
به نام تجزیه کننده ایجاد می کنیم که ویژگی ها را
21
00:00:38,190 –> 00:00:40,079
از کلاس تجزیه کننده slice به ارث می برد، درست مانند
22
00:00:40,079 –> 00:00:42,510
laxer و کاری که انجام می دهیم این است که
23
00:00:42,510 –> 00:00:44,670
توکن ها را از یک بازیگر به تجزیه کننده خود در
24
00:00:44,670 –> 00:00:46,440
متغیری به نام tokens منتقل می کنیم، بنابراین
25
00:00:46,440 –> 00:00:48,539
این قوانین اولویت هستند که از
26
00:00:48,539 –> 00:00:50,579
محاسبه کردن یا آن را در برش ساخته شده است، بنابراین
27
00:00:50,579 –> 00:00:52,199
اگر به پایین اسکرول کنم، می توانید قوانین اولویت دیگر را در اینجا ببینید،
28
00:00:52,199 –> 00:00:53,940
بنابراین این قوانین در
29
00:00:53,940 –> 00:00:56,010
مثال ماشین حساب برش ساخته شده اند و این همان
30
00:00:56,010 –> 00:00:57,719
چیزی است که من به عنوان نقطه شروع
31
00:00:57,719 –> 00:00:59,280
برای زبان برنامه نویسی استفاده
32
00:00:59,280 –> 00:01:00,629
می کنم، کاری که آنها انجام می دهند این است که آنها فقط به
33
00:01:00,629 –> 00:01:02,370
مفسر چگونه معادلات ریاضی را به
34
00:01:02,370 –> 00:01:04,709
درستی مدیریت کند، به عنوان مثال
35
00:01:04,709 –> 00:01:06,210
می داند که ضرب و
36
00:01:06,210 –> 00:01:08,490
تقسیم را قبل از جمع و تفریق انجام
37
00:01:08,490 –> 00:01:10,170
دهد، بنابراین تجزیه کننده از قواعد گرامری تشکیل
38
00:01:10,170 –> 00:01:12,090
شده است، ما قواعد دستور زبان خود را به
39
00:01:12,090 –> 00:01:13,560
مولد تجزیه
40
00:01:13,560 –> 00:01:15,720
کننده می دهیم و مولد تجزیه کننده یک تجزیه کننده برای آن گرامر به ما می دهد.
41
00:01:15,720 –> 00:01:17,610
بنابراین اولین قانون ما یک دستور نامیده می شود
42
00:01:17,610 –> 00:01:19,439
و ما می گوییم که یک دستور
43
00:01:19,439 –> 00:01:21,720
می تواند خالی باشد و اگر یک دستور خالی باشد
44
00:01:21,720 –> 00:01:23,250
ما فقط می خواهیم کاری انجام ندهیم به این معنی است که
45
00:01:23,250 –> 00:01:25,590
برای مثال اگر ما در مفسر خود باشیم
46
00:01:25,590 –> 00:01:27,150
اگر enter را بزنم و خطوط جدیدی ایجاد کنم
47
00:01:27,150 –> 00:01:28,500
وجود دارد هیچ کدی برای اجرا
48
00:01:28,500 –> 00:01:30,240
نخواهد بود، فقط خالی خواهد بود و این همان کاری است
49
00:01:30,240 –> 00:01:31,979
که این دستور در اینجا
50
00:01:31,979 –> 00:01:33,360
51
00:01:33,360 –> 00:01:34,590
انجام می دهد.
52
00:01:34,590 –> 00:01:36,990
به پایین پیمایش کنید و
53
00:01:36,990 –> 00:01:38,880
تخصیص متغیرها را مشاهده کنید، بنابراین در اینجا
54
00:01:38,880 –> 00:01:40,590
میتوانیم متغیرهایی را اختصاص دهیم، میتوانیم رشتهها را اختصاص دهیم
55
00:01:40,590 –> 00:01:42,630
و عبارات و عبارات را میتوان
56
00:01:42,630 –> 00:01:44,490
به روشهای مختلف تقسیم کرد.
57
00:01:44,490 –> 00:01:46,500
58
00:01:46,500 –> 00:01:48,509
59
00:01:48,509 –> 00:01:51,149
یا عددی که به ما امکان می دهد
60
00:01:51,149 –> 00:01:53,220
عبارات بی نهایت طولانی داشته باشیم
61
00:01:53,220 –> 00:01:55,320
زیرا بازگشتی است زیرا یک عبارت می
62
00:01:55,320 –> 00:01:57,119
تواند عبارت دیگری باشد که می تواند
63
00:01:57,119 –> 00:01:58,619
به همان اندازه که نیاز دارد شکسته شود،
64
00:01:58,619 –> 00:02:00,930
بنابراین یک عبارت p1 + 2
65
00:02:00,930 –> 00:02:04,259
نیز می تواند 1 + 2 + 3 باشد. یا + 4 یا ضربدر 5
66
00:02:04,259 –> 00:02:06,450
و وقتی اجرا می کنیم درخت تجزیه را
67
00:02:06,450 –> 00:02:08,669
می بینیم که توسط تجزیه کننده تولید می شود، بنابراین
68
00:02:08,669 –> 00:02:10,470
تجزیه کننده ما این را تولید می کند و
69
00:02:10,470 –> 00:02:12,540
این همان چیزی است که ما برای اجرای برنامه خود استفاده می کنیم
70
00:02:12,540 –> 00:02:13,050
71
00:02:13,050 –> 00:02:14,670
تا بتوانیم عباراتی را به
72
00:02:14,670 –> 00:02:16,230
متغیرها و رشته ها اختصاص دهیم و این همان چیزی است که
73
00:02:16,230 –> 00:02:17,880
تمام کاری که میتوانیم انجام دهیم زمانی که یک متغیر را اختصاص میدهیم،
74
00:02:17,880 –> 00:02:19,260
اما یک متغیر در واقع میتواند
75
00:02:19,260 –> 00:02:20,910
به مقدار متغیر دیگری نیز اختصاص داده شود،
76
00:02:20,910 –> 00:02:23,070
زیرا میتوانید ببینید که به یک متغیر
77
00:02:23,070 –> 00:02:24,990
میتوان یک عبارت اختصاص داد و اگر به
78
00:02:24,990 –> 00:02:27,000
پایین پیمایش کنیم عبارت میتواند
79
00:02:27,000 –> 00:02:28,650
متغیر دیگری باشد، بنابراین چیزی که
80
00:02:28,650 –> 00:02:30,510
در اینجا میتوانیم ببینیم شرط است، بنابراین اگر
81
00:02:30,510 –> 00:02:32,460
به یک دستور if پیمایش کنم، میبینیم که یک
82
00:02:32,460 –> 00:02:34,110
عبارت if همان کلمه کلیدی if با یک
83
00:02:34,110 –> 00:02:37,260
شرط است، سپس کلمه کلیدی van، سپس
84
00:02:37,260 –> 00:02:38,940
شاخه اول یا شاخه دوم
85
00:02:38,940 –> 00:02:40,800
بسته به آن است. با شرط و
86
00:02:40,800 –> 00:02:42,840
شرط اگر به پایین اسکرول کنیم برابر است با
87
00:02:42,840 –> 00:02:45,000
یک عبارت با دو برابر و
88
00:02:45,000 –> 00:02:46,740
سپس عبارت دیگر می توانیم
89
00:02:46,740 –> 00:02:48,540
شرایط بیشتری ایجاد کنیم اما فقط برای سادگی
90
00:02:48,540 –> 00:02:50,370
یک شرط ایجاد کردم که
91
00:02:50,370 –> 00:02:52,050
عملگر مقایسه است و سپس
92
00:02:52,050 –> 00:02:53,700
یک تعریف تابع داریم که
93
00:02:53,700 –> 00:02:55,530
کلمه کلیدی phone نام تابعی است
94
00:02:55,530 –> 00:02:57,330
که فقط یک متغیر است در دو
95
00:02:57,330 –> 00:02:59,400
پرانتز عملگر فلش و سپس
96
00:02:59,400 –> 00:03:01,350
عبارت یا کدی که می خواهیم در
97
00:03:01,350 –> 00:03:02,640
تابع خود اجرا کنیم و اگر به یک
98
00:03:02,640 –> 00:03:04,830
دستور نگاه کنیم اینها همه عبارت هستند بنابراین یک
99
00:03:04,830 –> 00:03:06,360
حلقه for یک دستور است. بنابراین به عنوان یک
100
00:03:06,360 –> 00:03:08,520
دستور