Skip to content

Commit 5d22e41

Browse files
authored
Update README.md
1 parent f533fb2 commit 5d22e41

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

Diff for: README.md

+34
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,40 @@ EBNF:
110110
TYPE = "Int" | "Bool" | "String";
111111
BOOL = "true" | "false";
112112
STRING = '"', {.*?}, '"';
113+
114+
115+
## Functions v2.4.0
116+
117+
Syntactic diagram: https://github.com/IagoMendes/CompiladorJulia/blob/master/Diagrams/diagrama7.png
118+
119+
EBNF:
120+
121+
BLOCK = { COMMAND | BLOCKF };
122+
COMMAND = ( LOCAL | ASSIGNMENT | PRINT | IF | WHILE | FUNCTIONCALL | ( "return", RELEX ) );
123+
BLOCKF = "function", IDENTIFIER, "(", (IDENTIFIER, "::", TYPE), {",", IDENTIFIER, "::", TYPE}, ")", "::", TYPE, "\n", { COMMAND }, "end";
124+
FUNCTIONCALL = IDENTIFIER, "(", ( RELEX ), {",", RELEX}, ")";
125+
LOCAL = "local", IDENTIFIER, "::", TYPE;
126+
ASSIGNMENT = IDENTIFIER, “=”, ( RELEX | “readline()”);
127+
PRINT = “println”, “(“, RELEX, “)”;
128+
WHILE = “while”, RELEX, BLOCK, “end”;
129+
IF = “if”, RELEX, BLOCK, { ELSE | ELSEIF }, “end”;
130+
ELSEIF = “elseif”, RELEX, BLOCK, { ELSE | ELSEIF };
131+
ELSE = “else”, BLOCK;
132+
RELEX = EXPRESSION, { (“==” | “<” | “>”), EXPRESSION };
133+
EXPRESSION = TERM, { (“+” | “-” | “||”), TERM };
134+
TERM = FACTOR, { (“*” | “/” | “&&”), FACTOR };
135+
FACTOR = ( ( “+” | “-” | “!”), FACTOR) | NUMBER | BOOL | STRING | IDENTIFIER | “(“, RELEX, “)” | FUNCTIONCALL;
136+
IDENTIFIER = LETTER, { LETTER | DIGIT | “_” };
137+
NUMBER = DIGIT, { DIGIT };
138+
LETTER = ( a | … | z | A | … | Z );
139+
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 );
140+
TYPE = "Int" | "Bool" | "String";
141+
BOOL = "true" | "false";
142+
STRING = '"', {.*?}, '"';
143+
144+
## Assembly v3.0.0
145+
146+
Simpler compiler (without functions, strings and "readline"), but generates .asm file for julia code.
113147

114148

115149
## Version Control

0 commit comments

Comments
 (0)