php_parser_rs/parser/ast/
goto.rs

1use schemars::JsonSchema;
2use serde::Deserialize;
3use serde::Serialize;
4
5use crate::lexer::token::Span;
6use crate::node::Node;
7use crate::parser::ast::comments::CommentGroup;
8use crate::parser::ast::identifiers::SimpleIdentifier;
9
10#[derive(Debug, PartialEq, Eq, Clone, Deserialize, Serialize, JsonSchema)]
11
12pub struct LabelStatement {
13    pub comments: CommentGroup,
14    pub label: SimpleIdentifier, // `foo`
15    pub colon: Span,             // `:`
16}
17
18impl Node for LabelStatement {
19    fn children(&mut self) -> Vec<&mut dyn Node> {
20        vec![&mut self.label]
21    }
22}
23
24#[derive(Debug, PartialEq, Eq, Clone, Deserialize, Serialize, JsonSchema)]
25
26pub struct GotoStatement {
27    pub comments: CommentGroup,
28    pub keyword: Span,           // `goto`
29    pub label: SimpleIdentifier, // `foo`
30    pub semicolon: Span,         // `;`
31}
32
33impl Node for GotoStatement {
34    fn children(&mut self) -> Vec<&mut dyn Node> {
35        vec![&mut self.label]
36    }
37}