Skip to content

Cookie137/FTL-Translator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FTL-Translator

Грамматика v1.0

<Программа> → { <Оператор> }

<Оператор> → <Определение функции>
                        | <Функция IO>
                        | <Объявление переменных>
                        | <Присваивание>
                        | <Выражение> “;”
                        | <Оператор if>
                        | <Оператор switch>
                        | <Цикл while>
                        | <Цикл for>
                        | <break>
                        | <continue> 
                        | <return>
                        | “;”

<Определение функции> → "function" <Идентификатор> "(" <Список параметров> ")" ":" [<Тип> | “Void”] "{" { <Оператор> } "}"

<Список параметров> → [ <Параметр> { "," <Параметр> } ]

<Параметр> → <Тип> <Идентификатор>

<Тип> → "Int" | "Float" | "Bool" | "Char" | “String” | "Array" "<" <Тип> ">"

<Функция IO> → "Read" "(" <Список идентификаторов> ")" “;”
                           | “Readln” "(" <Список идентификаторов> ")" “;”
                           | "Write" "(" <Список идентификаторов> ")" “;”
                           | "Writeln" "(" <Список идентификаторов> ")" “;”

<Список идентификаторов> → <Идентификатор> { "," <Идентификатор> }

<Объявление переменных> → <Тип> <Список переменных>

<Список переменных> → <Переменная> { "," <Переменная> }

<Переменная> → <Идентификатор> | <Идентификатор> "=" <Выражение>

<Присваивание> → <Идентификатор> "=" <Выражение>

<Выражение> → <Унарное выражение> | <Бинарное выражение> | <Операнд>

<Унарное выражение> → <Унарный оператор> <Выражение>

<Бинарное выражение> → <Выражение> <Бинарный оператор> <Выражение>

<Унарный оператор> → “!” | “+” | “-“

<Бинарный оператор> → "*" | "/" | "%"
                    | "+" | "-" |
                    | ">" | "<" | ">=" | "<="
                    | "==" | "!="
                    | "&"
                    | "^"
                    | "|"
                    | "->"

<Операнд> → <Идентификатор> | <Литерал> | "(" <Выражение> ")"

<Оператор if> → "if" "(" <Выражение> ")" "{" { <Оператор> } "}"
              { "elif" "(" <Выражение> ")" "{" { <Оператор> } "}" }
              [ "else" "{" { <Оператор> } "}" ]

<Оператор switch> → "switch" "(" <Выражение> ")" "{" { <Блок case> } "}"

<Блок case> → "[" <Литерал> "]" "{" { <Оператор> } "}"

<Цикл while> → "while" "(" <Выражение> ")" "{" { <Оператор> } "}"

<Цикл for> → "for" "(" <Объявление переменных> ";" <Выражение> ";" <Присваивание> ")" "{" { <Оператор> } "}"

<break> → “break” “;”

<continue> → “continue” “;”

<return> → "return" [ <Выражение> ] “;”
<Program> -> {<Operator>}

*<Operator>*:
    <FunctionDefinition> |
    <IfStatement> |
    <ForStatement> |
    <WhileStatement> |
    <SwitchStatement> |
    <Expression> |
    <VariableDeclaration>


*FunctionDefinition*:
'function' '(' <FunctionParams> ')' [ <TypeDeclaration> ] '{'
    {<Expression> | <VariableDeclaration>}
'}'

*Expression*:

About

Jopa Script 😱😱😱

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published