Пакет
Что бы вы сделали, будь у вас AST для proto message? Я бы, например, только в нем схемы и описывал 😁
final class MessageDefNodeTest extends TestCase
{
public function testParse(): void
{
$node = $this->parser->parse(
<<<'PROTO'
syntax = "proto3";
package example;
message Person {
string name = 1;
int32 id = 2;
string email = 3;
}
PROTO,
);
$this->assertSame('proto3', $node->syntax->syntax);
$this->assertSame('example', $node->package->name);
$message = $node->topLevelDefs[0];
$this->assertSame('Person', $message->name);
$this->assertCount(3, $message->fields);
$this->assertSame('name', $message->fields[0]->name);
$this->assertSame('string', $message->fields[0]->type);
$this->assertSame(1, $message->fields[0]->number);
$this->assertSame('id', $message->fields[1]->name);
$this->assertSame('int32', $message->fields[1]->type);
$this->assertSame(2, $message->fields[1]->number);
$this->assertSame('email', $message->fields[2]->name);
$this->assertSame('string', $message->fields[2]->type);
$this->assertSame(3, $message->fields[2]->number);
}
}