Skip to content

Commit

Permalink
grammar,astgen: parse enum literal (.enum_field)
Browse files Browse the repository at this point in the history
  • Loading branch information
StunxFS committed Jun 7, 2024
1 parent f0ada88 commit 984cdc0
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 0 deletions.
11 changes: 11 additions & 0 deletions bsc/AST.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,17 @@ def __str__(self):
def __repr__(self):
return str(self)

class EnumLiteral:
def __init__(self, name, pos):
self.name = name
self.pos = pos

def __str__(self):
return f".{self.name}"

def __repr__(self):
return str(self)

class Ident:
def __init__(self, name, pos):
self.name = name
Expand Down
3 changes: 3 additions & 0 deletions bsc/astgen.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,9 @@ def tuple_literal(self, *nodes):
elems.append(node)
return TupleLiteral(elems, self.mkpos(nodes[0]) + self.mkpos(nodes[-1]))

def enum_literal(self, *nodes):
return EnumLiteral(nodes[1].name, self.mkpos(nodes[0]) + nodes[1].pos)

def LOGICAL_AND(self, *nodes):
return BinaryOp.logical_and

Expand Down
1 change: 1 addition & 0 deletions bsc/grammar.lark
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ unary_expr: unary_op* primary_expr
| AT NAME -> builtin_var
| expr DOT NAME -> selector_expr
| path_expr
| DOT NAME -> enum_literal
| LBRACKET [expr (COMMA expr)*] RBRACKET BANG? -> array_literal
| LBRACE expr COLON expr (COMMA expr COLON expr)* RBRACE -> map_literal
| LPAREN expr (COMMA expr)* RPAREN -> tuple_literal
Expand Down
3 changes: 3 additions & 0 deletions examples/syntax.bs
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ class Person {
}

fn main() {
var w = WorldLevel.midgard
w = .undefined

var x = 666.0e4
var a = 123
var q, m, c = (99, true, nil)
Expand Down

0 comments on commit 984cdc0

Please sign in to comment.