42 lines
762 B
Python
42 lines
762 B
Python
from dataclasses import dataclass, field
|
|
from parsers.tokenizer import TokenKind, Keywords
|
|
|
|
|
|
@dataclass()
|
|
class Node:
|
|
pass
|
|
|
|
|
|
@dataclass()
|
|
class NopNode(Node):
|
|
pass
|
|
|
|
def __repr__(self):
|
|
return "nop"
|
|
|
|
|
|
@dataclass()
|
|
class ErrorNode(Node):
|
|
pass
|
|
|
|
|
|
class BaseParser:
|
|
def __init__(self, name, text):
|
|
self.name = name
|
|
self.text = text
|
|
self.has_error = False
|
|
self.error_sink = []
|
|
|
|
def parse(self):
|
|
pass
|
|
|
|
@staticmethod
|
|
def get_text_from_tokens(tokens):
|
|
if tokens is None:
|
|
return ""
|
|
res = ""
|
|
for token in tokens:
|
|
value = Keywords(token.value).value if token.type == TokenKind.KEYWORD else token.value
|
|
res += value
|
|
return res
|