მაგალითად ჯავაში ენის დამამუშავებელი იყენებს ორივე სისტემას. თავიდან ჯავაზე დაწერილი პროგრამა კომპილირდება შუამავალ პროგამაში ანუ ბაიტკოდში და შემდგომ ჯავა ვირტუალური მანქანის განმმარტებელი ასრულებს ბაიტკოდში მითიტებულ ბრძანებებს. იმის გამო რომ პროგრამების უმეტესობა მოთავსებულია ერთზე მეტ ფაილში, კომპილატორს, მიზნის მისაღწევად, შეიძლება სხვა პროგამების გამოყენება დასჭირდეს. ერთ ერთი მასეთი პროგრამა არის პრეპროცესორი, რომლის დანიშნულებაა შეაგროვოს სხვადასხვა ფაილებზე გაფანტული პროგრამა და გააფართოვოს მაკროები წყარო ენის გამოსახულებებში. ლინკერი გადაწყვეტილებებს ღებულობს გარე მეხსიერების მისამართების დანიშვნაზე სადაც ერთ ფაილში მოთავსებული გამოსახულება უთითებს სხვა ფაილში მათავსებულ პროგამის კოდს. ლოუდერს გადაყავს გასაშვები ობიექტის ფაილები მეხსიერებაში პროგრამის გასაშვებად.
კომპილატორის სტრუქტურა
სტანდარტული კომპილატორი შედგება ორი ნაწილისგან: ანალიზი და სინთეზი. ანალიზი შლის წყარო ენას რამდენიმე ნაწილად და ადგენს ამ პროგრამის გრამატიკულ სტრუქტურას. ეს სტრუქტურა შემდგომ შუამავალი კოდის სახეს ღებულობს და სინტეზის ფაზაში განაგრძობს გადამუშავებას. ანალიზის დროს ხდება პროგრამის სინტატიკური და სემანტიკური შეცდომების დადგენა. გროვდება სხვადასხვა ინფორმაცია პროგრამის შესახებ და ხდება მათი შენახვა მონაცემთა სტრუქტურაში რომელსაც სიმბოლოების ცხრილი ეწოდება.
სინთეზის ფაზა შუალედური კოდის და სიმბოლოების ცხრილის გამოყენებით ქმნის სამიზნე პროგრამას. ანალიზის ნაწილს ხშირად წინა ნაწყვეტს უწოდებენ, სინთეზის ნაწილს კი უკანა ნაწყვეტს.
სინთეზის ფაზა შუალედური კოდის და სიმბოლოების ცხრილის გამოყენებით ქმნის სამიზნე პროგრამას. ანალიზის ნაწილს ხშირად წინა ნაწყვეტს უწოდებენ, სინთეზის ნაწილს კი უკანა ნაწყვეტს.
No comments:
Post a Comment