///|
pub type ConfigLoc = @basic.Location
///|
pub(all) struct ConfigField {
key : String
key_loc : ConfigLoc
value : Ast
} derive(Eq, Debug)
///|
pub(all) enum Ast {
Bool(Bool, ConfigLoc)
Str(String, ConfigLoc)
Int(String, ConfigLoc)
Arr(Array[Ast], ConfigLoc)
Obj(Array[ConfigField], ConfigLoc)
} derive(Eq, Debug)
///|
pub fn Ast::loc(self : Ast) -> ConfigLoc {
match self {
Bool(_, loc) => loc
Str(_, loc) => loc
Int(_, loc) => loc
Arr(_, loc) => loc
Obj(_, loc) => loc
}
}