Skip to content

Tugas Besar IF2124 Teori Bahasa Formal dan Otomata Compiler Bahasa JavaScript

Notifications You must be signed in to change notification settings

rifqifarhansyah/TuBes-IF2124-TBFO

Repository files navigation

TuBes-IF2124-TBFO

🐍 JavaScript Compiler with Python 🐍


Table of Contents

  1. General Info
  2. Member List
  3. Features
  4. Structure
  5. Contact

General Information

Dalam proses pembuatan program dari sebuah bahasa menjadi instruksi yang dapat dieksekusi oleh mesin, terdapat pemeriksaan sintaks bahasa atau parsing yang dibuat oleh programmer untuk memastikan program dapat dieksekusi tanpa menghasilkan error. Parsing ini bertujuan untuk memastikan instruksi yang dibuat oleh programmer mengikuti aturan yang sudah ditentukan oleh bahasa tersebut. Baik bahasa berjenis interpreter maupun compiler, keduanya pasti melakukan pemeriksaan sintaks. Perbedaannya terletak pada apa yang dilakukan setelah proses pemeriksaan (kompilasi/compile) tersebut selesai dilakukan. Dibutuhkan grammar bahasa dan algoritma parser untuk melakukan parsing. Sudah sangat banyak grammar dan algoritma yang dikembangkan untuk menghasilkan compiler dengan performa yang tinggi. Terdapat CFG, CNF-e, CNF+e, 2NF, 2LF, dll untuk grammar yang dapat digunakan, dan terdapat LL(0), LL(1), CYK, Earley’s Algorithm, LALR, GLR, Shift-reduce, SLR, LR(1), dll untuk algoritma yang dapat digunakan untuk melakukan parsing.

Member List

Nama NIM
M. Abdul Aziz Ghazali 13521128
M. Zaki Amanullah 13521146
M. Rifqi Farhansyah 13521166

Features

Pada tugas besar ini, telah diimplementasikan parser JavaScript (Node.js) untuk beberapa statement dan sintaks bawaan JavaScript. Konsep CFG (Context Free Grammar) digunakan untuk pengerjaan parser yang mengevaluasi syntax program. Sementara itu, nama variabel dan operasi (+, -, >, dll) dalam program, akan dievalusi menggunakan FA (Finite Automata).

Structure

│   coba.js
│   coba.py
│   main.py
│   parser_main.py
│   README.md
│
├───.vscode
│       tasks.json
│
├───CYK
│   │   cyk.py
│   │   __init__.py
│   │
│   └───__pycache__
│           cyk.cpython-310.pyc
│           cyk.cpython-39.pyc
│           __init__.cpython-310.pyc
│           __init__.cpython-39.pyc
│
├───fileProcessing
│   │   file.txt
│   │   file_processing.py
│   │   token.py
│   │   __init__.py
│   │
│   └───__pycache__
│           token.cpython-310.pyc
│           token.cpython-39.pyc
│           __init__.cpython-310.pyc
│           __init__.cpython-39.pyc
│
├───grammar
│   │   debug_grammar.txt
│   │   grammar.txt
│   │   grammar_convert.py
│   │   grammar_parser.py
│   │   __init__.py
│   │
│   └───__pycache__
│           grammar_convert.cpython-310.pyc
│           grammar_convert.cpython-39.pyc
│           grammar_parser.cpython-310.pyc
│           grammar_parser.cpython-39.pyc
│           __init__.cpython-310.pyc
│           __init__.cpython-39.pyc
│
├───result
│       tokenResult.txt
│
├───variable_fa
│       variable_fa.py
│
└───__pycache__
        CFGtoCNF.cpython-310.pyc
        CFGtoCNF.cpython-39.pyc

Contact

Created by JawaScript
2022


About

Tugas Besar IF2124 Teori Bahasa Formal dan Otomata Compiler Bahasa JavaScript

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published