MCPcopy Create free account
hub / github.com/github/gh-aw / parsePrimaryExpression

Method parsePrimaryExpression

pkg/workflow/expression_parser.go:242–267  ·  view source on GitHub ↗

parsePrimaryExpression parses literals and parenthesized expressions

()

Source from the content-addressed store, hash-verified

240
241// parsePrimaryExpression parses literals and parenthesized expressions
242func (p *ExpressionParser) parsePrimaryExpression() (ConditionNode, error) {
243 if expressionsLog.Enabled() {
244 expressionsLog.Printf("Parsing primary expression at token: %s", p.current().value)
245 }
246 switch p.current().kind {
247 case tokenLeftParen:
248 p.advance() // consume (
249 expr, err := p.parseOrExpression()
250 if err != nil {
251 return nil, err
252 }
253 if p.current().kind != tokenRightParen {
254 return nil, fmt.Errorf("expected ')' at position %d", p.current().pos)
255 }
256 p.advance() // consume )
257 return expr, nil
258
259 case tokenLiteral:
260 literal := p.current().value
261 p.advance()
262 return &ExpressionNode{Expression: literal}, nil
263
264 default:
265 return nil, fmt.Errorf("unexpected token '%s' at position %d", p.current().value, p.current().pos)
266 }
267}
268
269// current returns the current token
270func (p *ExpressionParser) current() token {

Callers 1

parseUnaryExpressionMethod · 0.95

Calls 6

currentMethod · 0.95
advanceMethod · 0.95
parseOrExpressionMethod · 0.95
EnabledMethod · 0.45
PrintfMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected