Skip to content

mbluuka/KRCOMP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KRCOMP

Это мой компилятор для языка meow+-

Грамматика и РВ для выделения лексем, находятся в файле MEOW.g4 - вот пример части грамматики:

print
    :   PRINT OPEN_PAREN expressionList CLOSE_PAREN
    ;


ifStatment
    :   IF OPEN_PAREN conclusionList CLOSE_PAREN  block (ELSE block)?
    ;


conclusionList
    :   conclusion (pob=(AND | OR) conclusion)*
    ;


Дерево разбора строится с помощью определенных правил, которые расписаны в папке ast Пример правила разбора логических переменных, которые могут встретиться в нашей программке

public Node visitBoolLiteral(MLLParser.BoolLiteralContext ctx) {
        switch (ctx.getText()) {
            case "true":
                return Constant.True;
            case "false":
                return Constant.False;
        }
        return null;
    }

Семантический и синтаксический анализ лежит на плечах antlr-a, также

Пример синтаксического анализа:

На вход поступает такая вот программа, написанная на моем языке

image

Дерево разбора:

image


Ошибки:

Синтаксические ошибки:

image image


Семантические ошибки:

image image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published