bedrock.lang.cpp.syntax.notations
(*
* Copyright (c) 2024 BedRock Systems, Inc.
* This software is distributed under the terms of the BedRock Open-Source License.
* See the LICENSE-BedRock file in the repository root for details.
*)
Require Import bedrock.lang.cpp.parser.notation.
(* This file simply sets up notation scopes, in particular,
those that are needed by <<_names>> files.
*)
Declare Scope cpp_type_scope.
Delimit Scope cpp_type_scope with cpp_type.
Declare Scope cpp_scope.
Delimit Scope cpp_scope with cpp.
Declare Scope cpp_field_scope.
Delimit Scope cpp_field_scope with cpp_field.
Declare Scope cpp_name_scope.
Delimit Scope cpp_name_scope with cpp_name.
(* (* XXX This is only parsing to work around Coq misusing it outside *)
(* cpp_field_scope. See 235. *) *)
(* Notation "` e `" := e (e custom cppglobal at level 200, at level 0, *)
(* only parsing) : cpp_field_scope. *)
(* Notation "` e `" := e (e custom cppglobal at level 200, at level 0, *)
(* only parsing) : cpp_name_scope. *)
* Copyright (c) 2024 BedRock Systems, Inc.
* This software is distributed under the terms of the BedRock Open-Source License.
* See the LICENSE-BedRock file in the repository root for details.
*)
Require Import bedrock.lang.cpp.parser.notation.
(* This file simply sets up notation scopes, in particular,
those that are needed by <<_names>> files.
*)
Declare Scope cpp_type_scope.
Delimit Scope cpp_type_scope with cpp_type.
Declare Scope cpp_scope.
Delimit Scope cpp_scope with cpp.
Declare Scope cpp_field_scope.
Delimit Scope cpp_field_scope with cpp_field.
Declare Scope cpp_name_scope.
Delimit Scope cpp_name_scope with cpp_name.
(* (* XXX This is only parsing to work around Coq misusing it outside *)
(* cpp_field_scope. See 235. *) *)
(* Notation "` e `" := e (e custom cppglobal at level 200, at level 0, *)
(* only parsing) : cpp_field_scope. *)
(* Notation "` e `" := e (e custom cppglobal at level 200, at level 0, *)
(* only parsing) : cpp_name_scope. *)
Importing cpp_notation makes cpp2v-generated names generally
available as, e.g., ``::MyClass``.
Module Export cpp_notation.
Notation "'``' e '``'" := e
(at level 0, e custom cppglobal at level 200,
format "`` e ``") : cpp_scope.
Open Scope cpp_scope.
End cpp_notation.
Notation "'``' e '``'" := e
(at level 0, e custom cppglobal at level 200,
format "`` e ``") : cpp_scope.
Open Scope cpp_scope.
End cpp_notation.