Skip to content
← Back

src/syntax/parsers/expressions/tertiary.ghul

1
namespace Syntax.Parsers.Expressions is
2
use IO.Std
3
4
5
use Source
6
7
class TERTIARY(expression_secondary_parser: Parser[Trees.Expressions.Expression]): Base[Trees.Expressions.Expression] is
8
description: string => "tertiary expression"
9
10
super()
11
12
parse(context: CONTEXT) -> Trees.Expressions.Expression? =>
13
if context.current.token == Lexical.TOKEN.OPERATOR then
14
let name = Trees.Identifiers.Identifier(context.location, context.current_string!)
15
context.next_token()
16
let right = parse(context)!
17
18
Trees.Expressions.UNARY(name.location::right.location, name, right)
19
elif context.current.token == Lexical.TOKEN.AWAIT then
20
let start = context.location
21
context.next_token()
22
let right = parse(context)!
23
24
Trees.Expressions.AWAIT(start::right.location, right)
25
else
26
expression_secondary_parser.parse(context)
27
fi
28
si
29
si