1.1. Các công cụ hỗ trợ
TFJ là một ngôn ngữ nghiên cứu, có cấu trúc cú pháp đã đƣợc định nghĩa trong Chƣơng 2. Do vậy, việc đầu tiên chúng ta là phải đặc tả hình thức cú pháp cho ngôn ngữ, từ bộ cú pháp đó có thể sinh ra các bộ kiểm tra từ vựng và cú pháp để xác định một chƣơng trình TFJ có tuân thủ đặc tả hay không.
Để tiến hành cài đặt thực nghiệm ta cần 2 công cụ cơ bản sau:
- ANTLR: Đây là bộ công cụ cho phép ta xây dựng bộ phân tích từ vựng và bộ phân tích cú pháp (dƣới dạng mã lệnh Java, C#, Python, Ocalm, …) một cách tự động thông qua việc đặc tả cú pháp của ngôn ngữ trên nó.
- Visual Studio 2010: Là bộ soạn thảo, dùng để viết mã lệnh C# xây dựng các module thuật toán kiểu trên nền .Net 4.0 cũng nhƣ viết đặc tả cú pháp ngôn ngữ TFJ dựa khi đƣợc tích hợp bộ ANTLR.
1.2. Cấu hình ANTLR V3 với Visual Studio.Net
Do ANTLR V3 là một phiên bản khá mới và cập nhật. Việc cấu hình ANTLR V3 với Visual Studio.Net đƣợc xem nhƣ là khá khó để tiếp cận và hiện chƣa có tài liệu chính thống, đầy đủ cách thức cấu hình để phục vụ cho bài toán của chúng ta. Tổng hợp từ nhiều thông tin tham khảo sau đây phần phụ lục này cũng xin giới thiệu đầy đủ các bƣớc để chúng ta có thể cấu hình thành công ANTLR V3 với Visual Studio.Net.
Nhƣ mục 1.1, PHỤ LỤC 1 ta đã giới thiệu ANTLR là một bộ công cụ cho phép ta xây dựng bộ phân tích từ vựng và bộ phân tích cú pháp một cách tự động thông qua cú pháp đặc tả trong nó. Ta có thể lựa chọn Visual Studio 2010 có tích hợp ANTLR V3 để xây dựng ngôn ngữ TFJ này. Do đó, chúng ta cần có bƣớc cấu hình trƣớc khi thực hiện các công việc đó. Việc còn lại ta phải xây dựng các module thuật toán kiểu có thể viết với công cụ Visual Studio 2010 trên nền .NET 4.0 là công cụ để soạn thảo và xây dựng các module thuật toán kiểu và đầu vào của module chính là một chƣơng trình TFJ.
Trƣớc khi cấu hình các công cụ ta cần chuẩn bị nhƣ sau:
- Bộ ANTLR V3.3.1: Ta có thể tải gói antlr-dotnet-csharp3bootstrap-3.3.1.7705 từ địa chỉ www.tunnelvisionlabs.com/downloads/antlr/antlr-dotnet-csharp3bootstrap- 3.3.1.7705.7z .
66
- Gói Tvl.VisualStudio.Language.Antlr3 tƣơng tác ANTLR với Visual Studio 2010 từ địa chỉ
http://www.tunnelvisionlabs.com/downloads/vsx/Tvl.VisualStudio.Language.Antlr3.vsix
Các bƣớc tạo cấu hình một dự án có tích hợp bộ ANTLR ta có thể quan sát ở mục 1.3 PHỤ LỤC 1 tiếp sau đây.
1.3. Các bƣớc cấu hình một dự án có tích hợp bộ ANTLR
Bước 1: Tạo dự án TFJAnalysis có cấu trúc thƣ mục nằm trong thƣ mục C:\dev nhƣ sau:
C:\dev\TFJTools\
o TFJAnalysis\
TFJAnalysis.csproj
o TFJAnalysis.sln
Hình PL-0 1 Tạo mới một Project
Bước 2: Giải nén gói antlr-dotnet-csharp3bootstrap-3.3.1.7705 ở trên vào thƣ mục
C:\dev\TFJTools\Reference\Antlr\ nhƣ sau: C:\dev\TFJTools\ o Reference\ Antlr\ CodeGen\... Targets\... Tool\... Antlr3.exe Antlr3.exe.config Antlr3.Runtime.Debug.dll Antlr3.Runtime.dll Antlr3.StringTemplate.dll Antlr3.targets
67
AntlrBuildTask.dll
o TFJAnalysis\
TFJAnalysis.csproj
o TFJAnalysis.sln
Bước 3: Tích hợp tính năng Msbuild của ANTLR
Nhờ có Msbuid khi tích hợp vào .Net nó sẽ tự động sinh các lớp phân tích từ vựng (lexer) và phân tich cú pháp (parser) cho chƣơng trình nếu có đầu vào là một tệp định nghĩa cú pháp. Lần lƣợt thực hiện từng bƣớc nhỏ sau:
- Mở TFJAnalysis.sln.
- Unload dự án TFJAnalysis (bằng cách kích chuột phải lên dự án trong vùng
Solution Explorer và chọn Unload Project).
- Mở TFJAnalysis.csproj để soạn thảo (bằng cách kích chuột phải vào dự án đã đƣợc unload trong vùng Solution Explorer và chọn Edit TFJAnalysis.csproj). - Tìm đến dòng có nội dung:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Chèn dƣới dòng này nội dung:
<PropertyGroup> <!-- Folder containing AntlrBuildTask.dll -->
<AntlrBuildTaskPath>$(ProjectDir)..\Reference\Antlr</AntlrBuildTaskPath> <!-- Path to the ANTLR Tool itself. -->
<AntlrToolPath>$(ProjectDir)..\Reference\Antlr\Antlr3.exe</AntlrToolPath> </PropertyGroup>
<Import Project="$(ProjectDir)..\Reference\Antlr\Antlr3.targets" />
- Lƣu lại và đóng TFJAnalysis.csproj.
- Tải lại dự án TFJAnalysis (bằng cách kích chuột phải vào dự án đã đƣợc
unload trong vùng Solution Explorer và chọn Reload Project).
Bước 4: Tạo tham chiếu tới thƣ viện của ANTLR (bằng cách thêm một reference tới
Antlr3.runtime.dll có địa chỉ C:\dev\TFJTools\Reference\Antlr\Antlr3.runtime.dll).
Bước 5: Cài đặt gói Tvl.VisualStudio.Language.Antlr3 giúp tƣơng tác Antlr với .Net. Cho phép tạo mới một tệp định nghĩa ngữ pháp cho ngôn ngữ có đuôi mở rộng “.g3” (Ví dụ ở đây ta có thể thêm tệp Tfj.g3). Ta hoàn toàn có thể kiểm tra việc cài đặt gói
Tvl.VisualStudio.Language.Antlr3 thành công hay không bằng cách tạo mới một tệp định nghĩa ngôn ngữ.
68
Hình PL-0 2Tạo một tệp ngữ pháp trong ANTLR
Kết thúc bƣớc này ta sẽ thấy rằng mặc định 3 tệp tƣơng ứng TfjLexer.tokens,
TfjLexer.cs, TfjParser.cs sẽ tự sinh ra.
Kết thúc 6 bƣớc trên ta có đƣợc bảng từ vựng, bộ phân tích từ vựng và phân tích cú pháp tƣơng ứng với 3 tệp TfjLexer.tokens, TfjLexer.cs, TfjParser.cs ta có thể sử dụng vào trong bài toán xử lý kiểu của chúng ta.
69