/Compilador

Compilador Lógica da Computação

Primary LanguagePython

Compilador

Compilador Lógica da Computação

git status

Run using the command ./run.sh

Versions

V1.0

EXPRESSION = NUMBER, {("+" | "-"), NUMBER};
NUMBER = DIGIT, {DIGIT};
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 );

Image V1.0

V1.1

EXPRESSION = TERM, {("+" | "-"), TERM};
TERM = NUMBER, {("*" | "/"), NUMBER};
NUMBER = DIGIT, {DIGIT};
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 );

Image V1.1

V1.2

EXPRESSION = TERM, { ("+" | "-"), TERM } ;
TERM = FACTOR, { ("*" | "/"), FACTOR } ;
FACTOR = ("+" | "-") FACTOR | "(" EXPRESSION ")" | NUMBER ;
NUMBER = DIGIT, {DIGIT};
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 );

Image V1.2

V2.0

EXPRESSION = TERM, { ("+" | "-"), TERM } ;
TERM = FACTOR, { ("*" | "/"), FACTOR } ;
FACTOR = (("+" | "-"), FACTOR) | "(" EXPRESSION ")" | NUMBER ;
NUMBER = DIGIT, {DIGIT};
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 );

Image V2.0

V2.1

BLOCK = { STATEMENT };
STATEMENT = ( λ | ASSIGNMENT | PRINT), "\n" ;
ASSIGNMENT = IDENTIFIER, "=", EXPRESSION ;
PRINT = "Println", "(", EXPRESSION, ")" ;
EXPRESSION = TERM, { ("+" | "-"), TERM } ;
TERM = FACTOR, { ("*" | "/"), FACTOR } ;
FACTOR = (("+" | "-"), FACTOR) | NUMBER | "(", EXPRESSION, ")" | IDENTIFIER ;
IDENTIFIER = LETTER, { LETTER | DIGIT | "_" } ;
NUMBER = DIGIT, { DIGIT } ;
LETTER = ( a | ... | z | A | ... | Z ) ;
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 ) ;

Image V2.1

V2.2

PROGRAM = { STATEMENT };
BLOCK = "{", "\n", { STATEMENT }, "}";
ASSIGNMENT = IDENTIFIER, "=", BOOLEXPRESSION ;
STATEMENT = ( λ | ASSIGNMENT | PRINT | IF | FOR ), "\n" ;
IF = "if", BOOLEXPRESSION, BLOCK, (λ | ("else", BLOCK ));
FOR = "for", ASSIGNMENT, ";", BOOLEXPRESSION, ";", ASSIGNMENT, BLOCK;
BOOLEXPRESSION = BOOLTERM, { "||" , BOOLTERM };
BOOLTERM = RELEXPRESSION, {"&&", RELEXPRESSION };
RELEXPRESSION = EXPRESSION, { ("==" | ">" | "<") , EXPRESSION };
EXPRESSION = TERM, { ("+" | "-"), TERM } ;
TERM = FACTOR, { ("*" | "/"), FACTOR } ;
FACTOR = (("+" | "-" | "!"), FACTOR) | NUMBER | "(", BOOLEXPRESSION, ")" | IDENTIFIER | SCAN;
IDENTIFIER = LETTER, { LETTER | DIGIT | "_" } ;
NUMBER = DIGIT, { DIGIT } ;
LETTER = ( a | ... | z | A | ... | Z ) ;
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 ) ;
PRINT = "Println", "(", EXPRESSION, ")" ;
SCAN = "Scanln", "(",")";

Image V2.2

V2.3 e V3.0

PROGRAM = { STATEMENT };
BLOCK = "{", "\n", { STATEMENT }, "}";
ASSIGNMENT = IDENTIFIER, "=", BOOLEXPRESSION ;
STATEMENT = ( λ | ASSIGNMENT | PRINT | IF | FOR | VARDECLARATION), "\n" ;
VARDECLARATION = "var", IDENTIFIER, TYPE, (λ | "=",BOOLEXPRESSION);
IF = "if", BOOLEXPRESSION, BLOCK, (λ | ("else", BLOCK ));
FOR = "for", ASSIGNMENT, ";", BOOLEXPRESSION, ";", ASSIGNMENT, BLOCK;
BOOLEXPRESSION = BOOLTERM, { "||" , BOOLTERM };
BOOLTERM = RELEXPRESSION, {"&&", RELEXPRESSION };
RELEXPRESSION = EXPRESSION, { ("==" | ">" | "<") , EXPRESSION };
EXPRESSION = TERM, { ("+" | "-"), TERM } ;
TERM = FACTOR, { ("*" | "/"), FACTOR } ;
FACTOR = (("+" | "-" | "!"), FACTOR) | NUMBER | STRING | "(", BOOLEXPRESSION, ")" | IDENTIFIER | SCAN;
TYPE = ("int" | "string");
IDENTIFIER = LETTER, { LETTER | DIGIT | "_" } ;
NUMBER = DIGIT, { DIGIT } ;
STRING = LETTER , { LETTER | DIGIT | "_" | " " };
LETTER = ( a | ... | z | A | ... | Z ) ;
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 ) ;
PRINT = "Println", "(", EXPRESSION, ")" ;
SCAN = "Scanln", "(",")";

Image V2.3

V2.4

PROGRAM = { STATEMENT };
BLOCK = "{", "\n", { STATEMENT }, "}";
ASSIGNMENT = IDENTIFIER, (("=", BOOLEXPRESSION) | ("(",(λ | (BOOLEXPRESSION, { "," , BOOLEXPRESSION })),")")) ;
STATEMENT = ( λ | ASSIGNMENT | PRINT | IF | FOR | VARDECLARATION | ("Return",BOOLEXPRESSION)), "\n" ;
VARDECLARATION = "var", IDENTIFIER, TYPE, (λ | "=",BOOLEXPRESSION);
IF = "if", BOOLEXPRESSION, BLOCK, (λ|("else", BLOCK ));
FOR = "for", ASSIGNMENT, ";", BOOLEXPRESSION, ";", ASSIGNMENT, BLOCK;
BOOLEXPRESSION = BOOLTERM, { "||" , BOOLTERM };
BOOLTERM = RELEXPRESSION, {"&&", RELEXPRESSION };
RELEXPRESSION = EXPRESSION, { ("==" | ">" | "<") , EXPRESSION };
EXPRESSION = TERM, { ("+" | "-" | "."), TERM } ;
TERM = FACTOR, { ("*" | "/"), FACTOR } ;
FACTOR = (("+" | "-" | "!"), FACTOR) | NUMBER | STRING | "(", BOOLEXPRESSION, ")" | (IDENTIFIER,(λ | ("(",(λ | (BOOLEXPRESSION, { "," , BOOLEXPRESSION })),")")))| SCAN;
TYPE = ("int" | "string");
IDENTIFIER = LETTER, { LETTER | DIGIT | "_" } ;
NUMBER = DIGIT, { DIGIT } ;
STRING = LETTER , { LETTER | DIGIT | "_" | " " };
LETTER = ( a | ... | z | A | ... | Z ) ;
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 ) ;
PRINT = "Println", "(", EXPRESSION, ")" ;
SCAN = "Scanln", "(",")";
DECLARATION = "func", IDENTIFIER, "(",(λ | (IDENTIFIER, TYPE, { "," , IDENTIFIER, TYPE })),")",TYPE,BLOCK,"\n";

Image V2.4