-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgoblin-bnf.txt
41 lines (23 loc) · 1.09 KB
/
goblin-bnf.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<program> -> <varsBlock> <suprogramsBlock> <processBlock>
<varsBlock> -> <varsBlockToken> <colonToken> <varDecls> | { }
<varDecls> -> <varDecl> <remainingVarDecls>
<remainingVarDecls> -> <varDecls> | { }
<varDecl> -> <typeVar> <idToken> <semicolonToken>
<typeVar> -> <numType> | ...
<numType> -> <numToken> | <numToken> <numSpecifier>
<numSpecifier> -> (#1.#1)
<suprogramsBlock> -> <subprogramsBlockToken> <colonToken> <subPrograms> | { }
<subPrograms> -> <subProgram> <remainingSubPrograms>
<subProgram> -> <typeVar> <idToken> <openParToken> <parametersList> <closeParToken> <subProgramBody>
<remainingSubPrograms> -> <subProgram> | { }
<subProgramBody> -> <openCurlyBracketsToken> <varsBlock> <processBlock> <closeCurlyBracketsToken>
<processBlock> -> <processBlockToken> <colonToken> <stmts>
<stmts> -> <stmt> <remainingStmt>
<remainingStmt> -> <stmts> | { }
<stmt> -> (<assign> | ... ) <semiColonToken>
<assing> -> <idToken> <equalToken> <expression>
Ordem de precedência:
<expr> -> <term> | <term> + <expr>
<term> -> <factor> | <factor> * <term>
<factor> -> ( <expr> ) | <Id>
<id> -> <>