@@ -110,6 +110,40 @@ EBNF:
110
110
TYPE = "Int" | "Bool" | "String";
111
111
BOOL = "true" | "false";
112
112
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.
113
147
114
148
115
149
## Version Control
0 commit comments