Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /trunk/src/parser/diderot.grm
ViewVC logotype

Annotation of /trunk/src/parser/diderot.grm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24 - (view) (download)

1 : jhr 14 (* diderot.grm
2 :     *
3 :     * COPYRIGHT (c) 2010 The Diderot Project (http://diderot.cs.uchicago.edu)
4 :     * All rights reserved.
5 :     *)
6 :    
7 :     %name Diderot;
8 :    
9 :     %tokens
10 :     : KW_actor ("actor")
11 : jhr 19 | KW_die ("die")
12 : jhr 14 | KW_field ("field")
13 :     | KW_image ("image")
14 : jhr 19 | KW_new ("new")
15 :     | KW_stabelize ("stabelize")
16 :     | KW_eq ("=")
17 :     | OP_orelse ("||")
18 :     | OP_andalso ("&&")
19 :     | OP_lt ("<")
20 :     | OP_lte ("<=")
21 :     | OP_eqeq ("==")
22 :     | OP_neq ("!=")
23 :     | OP_gte (">=")
24 :     | OP_gt (">")
25 : jhr 14 | OP_plus ("+")
26 :     | OP_minus ("-")
27 :     | OP_star ("*")
28 : jhr 19 | OP_slash ("/")
29 : jhr 14 | OP_at ("@")
30 :     | LP ("(")
31 :     | RP (")")
32 :     | LB ("[")
33 :     | RB ("]")
34 :     | LCB ("{")
35 :     | RCB ("}")
36 :     | INT of IntInf.int
37 :     | FLOAT of FloatLit.float
38 :     | STRING of string
39 : jhr 19 | ID of Atom.atom
40 : jhr 14 ;
41 :    
42 :     File
43 :     : Decl+
44 :     ;
45 :    
46 :     Decl
47 : jhr 23 : InputDecl
48 :     | GlobalDecl
49 : jhr 14 | ActorDecl
50 :     ;
51 :    
52 : jhr 23
53 :     (***** Inputs *****)
54 :    
55 :     InputDecl
56 :     : "input" Type ID ( "=" Expr )? ";"
57 : jhr 14 ;
58 : jhr 19
59 : jhr 23 (***** Global declarations *****)
60 : jhr 19
61 : jhr 23 GlobalDecl
62 :     : Type ID "=" Expr ";"
63 :     ;
64 :    
65 :    
66 : jhr 19 (***** Actors *****)
67 :    
68 :     ActorDecl
69 :     : "actor" ID "(" Params ")" "{" ActorState* ActorMethod+ "}"
70 :     ;
71 :    
72 :     Params
73 :     : ( Param ( "," Param )* )?
74 :     ;
75 :    
76 :     Param
77 :     : Type ID
78 :     ;
79 :    
80 :     ActorState
81 :     : Type ID "=" Expr ";"
82 :     ;
83 :    
84 :     ActorMethod
85 : jhr 24 : ID Block
86 : jhr 19 ;
87 :    
88 : jhr 24 Block
89 :     : "{" Statement* "}"
90 :     ;
91 : jhr 19
92 : jhr 24 Statement
93 :     : Type ID "=" Expr ";"
94 :     | ID "=" Expr ";"
95 :     | "if" "(" Expr ")" Statement ("else" Statement)?
96 :     | Block
97 :     | "stable"
98 :     | "die"
99 :     | "new" ID "(" Arguments ")"
100 :     ;
101 :    
102 :     Arguments
103 :     : ( Expr ("," Expr)* )?
104 :     ;
105 :    
106 :    
107 : jhr 19 (***** Types *****)
108 :    
109 : jhr 24 Type : "image" "<" Dimensions ">"
110 :     | "tensor" "<" Dimensions ">"
111 :     | "field" "#" Dimension "<" Dimensions ">"
112 : jhr 23 | "kernel" "#" Dimension
113 :     | "vec" "<" Dimension ">"
114 :     | "bool"
115 : jhr 19 | "int"
116 :     | "real"
117 : jhr 24 | "string"
118 : jhr 19 ;
119 :    
120 : jhr 24 Dimensions
121 :     : ( Dimension ("," Dimension)* )?
122 :     ;
123 :    
124 : jhr 23 Dimension
125 :     : POSINT
126 :     ;
127 : jhr 19
128 :     (***** Expressions *****)
129 :    
130 :     Expr
131 :     : Expr1 ( "||" Expr1 )*
132 :     ;
133 :    
134 :     Expr1
135 :     : Expr2 ( "&&" Expr2 )*
136 :     ;
137 :    
138 :     Expr2
139 :     : Expr3 ( CmpOp Expr3 )*
140 :     ;
141 :    
142 :     CmpExp
143 :     : "<" | "<=" | "==" | ">=" | ">"
144 :     ;
145 :    
146 :     Expr3
147 :     : Expr4 ( AddOp Expr4 )*
148 :     ;
149 :    
150 :     AddOp
151 :     : "+" | "-"
152 :     ;
153 :    
154 :     Expr4
155 :     : Expr5 ( MulOp Expr5 )*
156 :     ;
157 :    
158 :     MulOp
159 :     : "*" | "/"
160 :     ;
161 :    
162 :     Expr5
163 : jhr 24 : Expr6 ( "@" Expr6 | "[" Expr "]" )*
164 : jhr 19 ;
165 :    
166 :     AtomExp
167 :     : ID
168 :     | INT
169 :     | FLOAT
170 :     | STRING
171 :     | "(" Expr ("," Expr)* ")"
172 :     ;

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0