-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnodes.py
23 lines (20 loc) · 1.11 KB
/
nodes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from collections import namedtuple
# High level
ProgramNode = namedtuple('ProgramNode', ['meta', 'cell', 'aliases', 'selectors', 'rules'])
MetaNode = namedtuple('MetaNode', ['stmts'])
CellNode = namedtuple('CellNode', ['decls'])
AliasesNode = namedtuple('AliasesNode', ['stmt_groups'])
SelectorsNode = namedtuple('SelectorsNode', ['stmts'])
RulesNode = namedtuple('RulesNode', ['rule_stmts'])
# Declarations, statements, statement groups
RuleStatementNode = namedtuple('RuleStatementNode', ['ruleName', 'selectorName', 'stmts'])
StatementGroupNode = namedtuple('StatementGroupNode', ['name', 'stmts'])
StatementNode = namedtuple('StatementNode', ['name', 'exp'])
DeclarationNode = namedtuple('DeclarationNode', ['typ', 'name', 'exp'])
# Expression nodes
UnaryOpNode = namedtuple('UnaryOpNode', ['op', 'exp'])
BinOpNode = namedtuple('BinOpNode', ['op', 'left', 'right'])
MatchCountNode = namedtuple('MatchCountNode', ['dirs', 'selector'])
BoolLiteralNode = namedtuple('BoolLiteralNode', ['value'])
IntLiteralNode = namedtuple('IntLiteralNode', ['value'])
ReferenceNode = namedtuple('ReferenceNode', ['name'])