mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 20:00:06 +08:00
90 lines
2.8 KiB
Scheme
90 lines
2.8 KiB
Scheme
|
; TLA+ scopes and definitions
|
||
|
[
|
||
|
(bounded_quantification)
|
||
|
(choose)
|
||
|
(function_definition)
|
||
|
(function_literal)
|
||
|
(lambda)
|
||
|
(let_in)
|
||
|
(module)
|
||
|
(module_definition)
|
||
|
(operator_definition)
|
||
|
(set_filter)
|
||
|
(set_map)
|
||
|
(unbounded_quantification)
|
||
|
] @scope
|
||
|
|
||
|
(choose (identifier) @definition.parameter)
|
||
|
(choose (tuple_of_identifiers (identifier) @definition.parameter))
|
||
|
(constant_declaration (identifier) @definition.constant)
|
||
|
(constant_declaration (operator_declaration name: (_) @definition.constant))
|
||
|
(function_definition
|
||
|
name: (identifier) @definition.function
|
||
|
(#set! "definition.function.scope" "parent"))
|
||
|
(lambda (identifier) @definition.parameter)
|
||
|
(module_definition
|
||
|
name: (_) @definition.import
|
||
|
(#set! "definition.import.scope" "parent"))
|
||
|
(module_definition parameter: (identifier) @definition.parameter)
|
||
|
(module_definition parameter: (operator_declaration name: (_) @definition.parameter))
|
||
|
(operator_definition
|
||
|
name: (_) @definition.macro
|
||
|
(#set! "definition.macro.scope" "parent"))
|
||
|
(operator_definition parameter: (identifier) @definition.parameter)
|
||
|
(operator_definition parameter: (operator_declaration name: (_) @definition.parameter))
|
||
|
(quantifier_bound (identifier) @definition.parameter)
|
||
|
(quantifier_bound (tuple_of_identifiers (identifier) @definition.parameter))
|
||
|
(unbounded_quantification (identifier) @definition.parameter)
|
||
|
(variable_declaration (identifier) @definition.var)
|
||
|
|
||
|
; Proof scopes and definitions
|
||
|
[
|
||
|
(non_terminal_proof)
|
||
|
(suffices_proof_step)
|
||
|
(theorem)
|
||
|
] @scope
|
||
|
|
||
|
(assume_prove (new (identifier) @definition.parameter))
|
||
|
(assume_prove (new (operator_declaration name: (_) @definition.parameter)))
|
||
|
(assumption name: (identifier) @definition.constant)
|
||
|
(pick_proof_step (identifier) @definition.parameter)
|
||
|
(take_proof_step (identifier) @definition.parameter)
|
||
|
(theorem
|
||
|
name: (identifier) @definition.constant
|
||
|
(#set! "definition.constant.scope" "parent"))
|
||
|
|
||
|
; PlusCal scopes and definitions
|
||
|
[
|
||
|
(pcal_algorithm)
|
||
|
(pcal_macro)
|
||
|
(pcal_procedure)
|
||
|
(pcal_with)
|
||
|
] @scope
|
||
|
|
||
|
(pcal_macro_decl parameter: (identifier) @definition.parameter)
|
||
|
(pcal_proc_var_decl (identifier) @definition.parameter)
|
||
|
(pcal_var_decl (identifier) @definition.var)
|
||
|
(pcal_with (identifier) @definition.parameter)
|
||
|
|
||
|
; Built-in PlusCal variables
|
||
|
(pcal_algorithm_body
|
||
|
[
|
||
|
(_ (identifier_ref) @definition.var)
|
||
|
(_ (_ (identifier_ref) @definition.var))
|
||
|
(_ (_ (_ (identifier_ref) @definition.var)))
|
||
|
(_ (_ (_ (_ (identifier_ref) @definition.var))))
|
||
|
(_ (_ (_ (_ (_ (identifier_ref) @definition.var)))))
|
||
|
]
|
||
|
(#vim-match? @definition.var "^(self|pc|stack)$")
|
||
|
)
|
||
|
|
||
|
; References
|
||
|
(identifier_ref) @reference
|
||
|
((prefix_op_symbol) @reference)
|
||
|
(bound_prefix_op symbol: (_) @reference)
|
||
|
((infix_op_symbol) @reference)
|
||
|
(bound_infix_op symbol: (_) @reference)
|
||
|
((postfix_op_symbol) @reference)
|
||
|
(bound_postfix_op symbol: (_) @reference)
|
||
|
(bound_nonfix_op symbol: (_) @reference)
|