/MT-PASCAL

❤ Методы Трансляции

Primary LanguageANTLR

Анализатор языка паскаль

Данная программа написана в рамках курса ❤ Методы Трансляции

Семантические ошибки, подлежащие обнаружению

  1. Использование необъявленного идентификатора
    • Необъявленные процедуры
  2. Повторное объявление идентификатора
    • Повторное объявление процедуры
    • Повторное объявление аргументов
  3. Использование переменной не в соответствии с объявлением
    • Примитивное обнаружение:
    n:=0;
    c:='c'
    s:="string"
    • Примитивное обнаружение c переменной:
    program vars;
    var n:integer;
    var k:string;
    begin
        n:=k;
    end.

Поддерживаемые конструкции Pascal

  • for
  • while
  • if
  • if-else-if*
  • if-else
  • procedure
  • assign

Были убраны обязательные ';'

Install

  1. install python3
  2. Install antlr4
    $ cd /usr/local/lib
    $ sudo curl -O http://www.antlr.org/download/antlr-4.7-complete.jar
    $ export CLASSPATH=".:/usr/local/lib/antlr-4.7-complete.jar:$CLASSPATH"
    $ alias antlr4='java -jar /usr/local/lib/antlr-4.7-complete.jar'
    $ alias grun='java org.antlr.v4.gui.TestRig'
  3. install runtime for python3
    $ pip install antlr4-python3-runtime
  4. git clone this repo
    $ git clone https://github.com/zhilyaev/MT-PASCAL.git
  5. Generate grammar
    $ antlr4 -Dlanguage=Python3 antlr/Pascal.g4
    or
    $ make
  6. run example
    main tests/syntax/vars_decl.pas
    or
    main.py tests/syntax/vars_decl.pas
    or
    python main.py tests/syntax/vars_decl.pas
  7. use make for tests demo
    $ make test