Class grammar
This commit is contained in:
+15
-2
@@ -19,8 +19,23 @@ var = { "var" }
|
||||
var_decl = { (var | type_expr) ~ mutable? ~ identifier }
|
||||
semicolon = _{ ";" }
|
||||
|
||||
// ================= CLASS =================
|
||||
class_constructor = {
|
||||
export? ~ "constructor" ~ "(" ~ param_list? ~ ")" ~ block
|
||||
}
|
||||
|
||||
class_fields = { var_decl_statement* }
|
||||
|
||||
class_methods = { function_decl* }
|
||||
|
||||
class_decl = {
|
||||
"class" ~ identifier ~ "{" ~ class_fields ~ class_constructor ~ class_methods ~ "}"
|
||||
}
|
||||
|
||||
// ================= TOP LEVEL =================
|
||||
|
||||
top_level = { (attributes ~ (import | function_decl | struct_decl)) | mod_attribute | class_decl }
|
||||
|
||||
attribute = {
|
||||
"#" ~ "[" ~ meta ~ "]"
|
||||
}
|
||||
@@ -39,8 +54,6 @@ meta_list = {
|
||||
|
||||
attributes = { attribute* }
|
||||
|
||||
top_level = { (attributes ~ (import | function_decl | struct_decl)) | mod_attribute }
|
||||
|
||||
import = { sharp ~ "include" ~ "<" ~ static_path ~ ">" }
|
||||
|
||||
field_list = { field ~ ("," ~ field)* ~ ","? }
|
||||
|
||||
Reference in New Issue
Block a user