New 'use' syntax with support for intro predicates (#431)

* New 'use' syntax with support for intro predicates

* Use empty statement in test

* Review feedback
This commit is contained in:
Rob Knight 2025-10-17 12:27:11 +02:00 committed by GitHub
parent ffed5b4fbd
commit aa4b531ac7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 118 additions and 13 deletions

View file

@ -26,13 +26,16 @@ arg_section = {
public_arg_list = { identifier ~ ("," ~ identifier)* }
private_arg_list = { identifier ~ ("," ~ identifier)* }
document = { SOI ~ (use_statement | custom_predicate_def | request_def)* ~ EOI }
document = { SOI ~ (use_batch_statement | use_intro_statement | custom_predicate_def | request_def)* ~ EOI }
use_statement = { "use" ~ use_predicate_list ~ "from" ~ batch_ref }
use_batch_statement = { "use" ~ "batch" ~ use_predicate_list ~ "from" ~ batch_ref }
use_predicate_list = { import_name ~ ("," ~ import_name)* }
import_name = { identifier | "_" }
batch_ref = { hash_hex }
use_intro_statement = { "use" ~ "intro" ~ identifier ~ "(" ~ use_intro_arg_list? ~ ")" ~ "from" ~ batch_ref }
use_intro_arg_list = { identifier ~ ("," ~ identifier)* }
request_def = { "REQUEST" ~ "(" ~ statement_list? ~ ")" }
// Define conjunction type explicitly