v/vlib/v/parser/comptime.v

30 lines
459 B
V
Raw Normal View History

2020-02-10 14:42:57 +01:00
module parser
2020-02-17 14:15:42 +01:00
import (
v.ast
)
pub fn (p mut Parser) comp_if() ast.CompIf {
2020-03-22 11:53:08 +01:00
pos := p.tok.position()
2020-02-17 14:15:42 +01:00
p.next()
p.check(.key_if)
if p.tok.kind == .not {
p.next()
}
2020-03-22 13:55:39 +01:00
val := p.check_name()
2020-02-17 14:15:42 +01:00
if p.tok.kind == .question {
p.next()
}
mut node := ast.CompIf{
stmts: p.parse_block()
2020-03-22 11:53:08 +01:00
pos: pos
2020-03-22 13:55:39 +01:00
val: val
}
2020-02-17 14:15:42 +01:00
if p.tok.kind == .dollar && p.peek_tok.kind == .key_else {
p.next()
p.check(.key_else)
node.else_stmts = p.parse_block()
2020-02-17 14:15:42 +01:00
}
return node
2020-02-17 14:15:42 +01:00
}