mirror of
https://gitlab.gnome.org/jwestman/blueprint-compiler.git
synced 2025-05-04 15:59:08 -04:00
language: Rename expression classes
Rename the expression classes to match the documentation.
This commit is contained in:
parent
ef39b5d7db
commit
9e82a2fb2a
5 changed files with 23 additions and 23 deletions
|
@ -7,8 +7,8 @@ from .expression import (
|
||||||
CastExpr,
|
CastExpr,
|
||||||
ClosureArg,
|
ClosureArg,
|
||||||
ClosureExpr,
|
ClosureExpr,
|
||||||
Expr,
|
ExprBase,
|
||||||
ExprChain,
|
Expression,
|
||||||
LiteralExpr,
|
LiteralExpr,
|
||||||
LookupOp,
|
LookupOp,
|
||||||
)
|
)
|
||||||
|
|
|
@ -20,19 +20,19 @@
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
from .common import *
|
from .common import *
|
||||||
from .expression import ExprChain, LookupOp, LiteralExpr
|
from .expression import Expression, LookupOp, LiteralExpr
|
||||||
from .contexts import ValueTypeCtx
|
from .contexts import ValueTypeCtx
|
||||||
|
|
||||||
|
|
||||||
class Binding(AstNode):
|
class Binding(AstNode):
|
||||||
grammar = [
|
grammar = [
|
||||||
Keyword("bind"),
|
Keyword("bind"),
|
||||||
ExprChain,
|
Expression,
|
||||||
]
|
]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def expression(self) -> ExprChain:
|
def expression(self) -> Expression:
|
||||||
return self.children[ExprChain][0]
|
return self.children[Expression][0]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def simple_binding(self) -> T.Optional["SimpleBinding"]:
|
def simple_binding(self) -> T.Optional["SimpleBinding"]:
|
||||||
|
|
|
@ -27,7 +27,7 @@ from .gtkbuilder_template import Template
|
||||||
expr = Sequence()
|
expr = Sequence()
|
||||||
|
|
||||||
|
|
||||||
class Expr(AstNode):
|
class ExprBase(AstNode):
|
||||||
@context(ValueTypeCtx)
|
@context(ValueTypeCtx)
|
||||||
def value_type(self) -> ValueTypeCtx:
|
def value_type(self) -> ValueTypeCtx:
|
||||||
if rhs := self.rhs:
|
if rhs := self.rhs:
|
||||||
|
@ -44,8 +44,8 @@ class Expr(AstNode):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def rhs(self) -> T.Optional["Expr"]:
|
def rhs(self) -> T.Optional["ExprBase"]:
|
||||||
if isinstance(self.parent, ExprChain):
|
if isinstance(self.parent, Expression):
|
||||||
children = list(self.parent.children)
|
children = list(self.parent.children)
|
||||||
if children.index(self) + 1 < len(children):
|
if children.index(self) + 1 < len(children):
|
||||||
return children[children.index(self) + 1]
|
return children[children.index(self) + 1]
|
||||||
|
@ -55,11 +55,11 @@ class Expr(AstNode):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
class ExprChain(Expr):
|
class Expression(ExprBase):
|
||||||
grammar = expr
|
grammar = expr
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def last(self) -> Expr:
|
def last(self) -> ExprBase:
|
||||||
return self.children[-1]
|
return self.children[-1]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -71,14 +71,14 @@ class ExprChain(Expr):
|
||||||
return self.last.type_complete
|
return self.last.type_complete
|
||||||
|
|
||||||
|
|
||||||
class InfixExpr(Expr):
|
class InfixExpr(ExprBase):
|
||||||
@property
|
@property
|
||||||
def lhs(self):
|
def lhs(self):
|
||||||
children = list(self.parent_by_type(ExprChain).children)
|
children = list(self.parent_by_type(Expression).children)
|
||||||
return children[children.index(self) - 1]
|
return children[children.index(self) - 1]
|
||||||
|
|
||||||
|
|
||||||
class LiteralExpr(Expr):
|
class LiteralExpr(ExprBase):
|
||||||
grammar = LITERAL
|
grammar = LITERAL
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -208,18 +208,18 @@ class CastExpr(InfixExpr):
|
||||||
|
|
||||||
|
|
||||||
class ClosureArg(AstNode):
|
class ClosureArg(AstNode):
|
||||||
grammar = ExprChain
|
grammar = Expression
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def expr(self) -> ExprChain:
|
def expr(self) -> Expression:
|
||||||
return self.children[ExprChain][0]
|
return self.children[Expression][0]
|
||||||
|
|
||||||
@context(ValueTypeCtx)
|
@context(ValueTypeCtx)
|
||||||
def value_type(self) -> ValueTypeCtx:
|
def value_type(self) -> ValueTypeCtx:
|
||||||
return ValueTypeCtx(None)
|
return ValueTypeCtx(None)
|
||||||
|
|
||||||
|
|
||||||
class ClosureExpr(Expr):
|
class ClosureExpr(ExprBase):
|
||||||
grammar = [
|
grammar = [
|
||||||
Optional(["$", UseLiteral("extern", True)]),
|
Optional(["$", UseLiteral("extern", True)]),
|
||||||
UseIdent("name"),
|
UseIdent("name"),
|
||||||
|
@ -257,6 +257,6 @@ class ClosureExpr(Expr):
|
||||||
|
|
||||||
|
|
||||||
expr.children = [
|
expr.children = [
|
||||||
AnyOf(ClosureExpr, LiteralExpr, ["(", ExprChain, ")"]),
|
AnyOf(ClosureExpr, LiteralExpr, ["(", Expression, ")"]),
|
||||||
ZeroOrMore(AnyOf(LookupOp, CastExpr)),
|
ZeroOrMore(AnyOf(LookupOp, CastExpr)),
|
||||||
]
|
]
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
from .expression import ExprChain
|
from .expression import Expression
|
||||||
from .gobject_object import Object
|
from .gobject_object import Object
|
||||||
from .gtkbuilder_template import Template
|
from .gtkbuilder_template import Template
|
||||||
from .values import Value, ObjectValue
|
from .values import Value, ObjectValue
|
||||||
|
|
|
@ -211,15 +211,15 @@ class XmlOutput(OutputFormat):
|
||||||
else:
|
else:
|
||||||
raise CompilerBugError()
|
raise CompilerBugError()
|
||||||
|
|
||||||
def _emit_expression(self, expression: ExprChain, xml: XmlEmitter):
|
def _emit_expression(self, expression: Expression, xml: XmlEmitter):
|
||||||
self._emit_expression_part(expression.last, xml)
|
self._emit_expression_part(expression.last, xml)
|
||||||
|
|
||||||
def _emit_expression_part(self, expression: Expr, xml: XmlEmitter):
|
def _emit_expression_part(self, expression: ExprBase, xml: XmlEmitter):
|
||||||
if isinstance(expression, LiteralExpr):
|
if isinstance(expression, LiteralExpr):
|
||||||
self._emit_literal_expr(expression, xml)
|
self._emit_literal_expr(expression, xml)
|
||||||
elif isinstance(expression, LookupOp):
|
elif isinstance(expression, LookupOp):
|
||||||
self._emit_lookup_op(expression, xml)
|
self._emit_lookup_op(expression, xml)
|
||||||
elif isinstance(expression, ExprChain):
|
elif isinstance(expression, Expression):
|
||||||
self._emit_expression(expression, xml)
|
self._emit_expression(expression, xml)
|
||||||
elif isinstance(expression, CastExpr):
|
elif isinstance(expression, CastExpr):
|
||||||
self._emit_cast_expr(expression, xml)
|
self._emit_cast_expr(expression, xml)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue