From ca832cb706d6a2d49d049b0ba827f606331269c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20B=C3=B6hm?= Date: Tue, 19 May 2009 17:20:48 +0200 Subject: define interfaces --- src/front/__init__.py | 7 ++++ src/front/inter/__init__.py | 0 src/front/lexer.py | 62 ++++++++++++++++++++++++++++ src/front/lexer/__init__.py | 0 src/front/parser.py | 96 +++++++++++++++++++++++++++++++++++++++++++ src/front/parser/__init__.py | 0 src/front/symbols.py | 9 ++++ src/front/symbols/__init__.py | 0 8 files changed, 174 insertions(+) delete mode 100644 src/front/inter/__init__.py create mode 100644 src/front/lexer.py delete mode 100644 src/front/lexer/__init__.py create mode 100644 src/front/parser.py delete mode 100644 src/front/parser/__init__.py create mode 100644 src/front/symbols.py delete mode 100644 src/front/symbols/__init__.py (limited to 'src') diff --git a/src/front/__init__.py b/src/front/__init__.py index e69de29..63529ef 100644 --- a/src/front/__init__.py +++ b/src/front/__init__.py @@ -0,0 +1,7 @@ +from front.lexer import Lexer +from front.parser import Parser + +def main(): + lex = Lexer() + parse = Parser(lex) + parse.program() diff --git a/src/front/inter/__init__.py b/src/front/inter/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/front/lexer.py b/src/front/lexer.py new file mode 100644 index 0000000..aca7473 --- /dev/null +++ b/src/front/lexer.py @@ -0,0 +1,62 @@ +class Lexer: + line = 1 + + def __init__(self): + return + + def reserve(self, word): + return + + def scan(): + return + +class Tag: + # lexer tokens + NUMBER = 1 + TRUE = 2 + FALSE = 3 + IDENT = 4 + WHILE = 5 + IF = 6 + ELSE = 7 + END = 8 + LBRAK = 9 + RBRAK = 10 + LPAREN = 11 + RPAREN = 12 + NEWLINE = 13 + COMMA = 14 + FUN = 15 + ASSIGNMENT = 16 + RETURN = 17 + OPERATOR = 18 + + # parser tokens + BOOL = 19 + JOIN = 20 + EQUALITY = 21 + RELATION = 22 + EXPRESSION = 23 + TERM = 24 + UNARY = 25 + FACTOR = 26 + IDENT_LIST = 27 + EXPRESSION_LIST = 28 + PROGRAM = 29 + FUNCTION = 30 + STATEMENT = 31 + STATEMENTS = 32 + IF_STATEMENT = 33 + WHILE_STATEMENT = 34 + RETURN_STATEMENT = 35 + ASSIGN_STATEMENT = 36 + FUNCTION_CALL = 37 + +class Token: + tag = None + + def __init__(self, tag): + return + + def __str__(self): + return diff --git a/src/front/lexer/__init__.py b/src/front/lexer/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/front/parser.py b/src/front/parser.py new file mode 100644 index 0000000..950a77c --- /dev/null +++ b/src/front/parser.py @@ -0,0 +1,96 @@ +class Parser: + lexer = None + + def __init__(self, lexer): + return + + def parse(self): + return self.program() + + def move(self): + return + + def error(self, msg): + return + + def match(tag): + return + + # bool = bool "||" join | join. + def bool(self): + return + + # join = join "&&" equality | equality. + def join(self): + return + + # equality = equality "==" relation | equality "!=" relation | relation. + def equality(self): + return + + # relation = expression "<" expression | expression "<=" expression | expression ">=" expression | expression ">" expression | expression. + def relation(self): + return + + # expression = expression "+" term | expression "-" term | term. + def expression(self): + return + + # term = term "*" unary | term "/" unary | unary. + def term(self): + return + + # unary = "!" unary | "-" unary | factor. + def unary(self): + return + + # factor = "(" bool ")" | ident | integer | "true" | "false". + def factor(self): + return + + # ident_list = ident { "," ident }. + def ident_list(self): + return + + # expression_list = expression { "," expression }. + def expression_list(self): + return + + # program = function { function }. + def program(self): + return + + # function = "fun" ident "[" [ ident_list ] "]" statements "end". + def function(self): + return + + # statements = statement { nl statement }. + def statements(self): + return + + # statement = [ if_statement | while_statement | assignment | function_call | return_statement ]. + def statement(self): + return + + # if_statement = "if" expression statements [ "else" statements ] "end". + def if_statement(self): + return + + # while_statement = "while" expression statements "end". + def while_statement(self): + return + + # assignment = ident "=" expression. + def assignment(self): + return + + # function_call = ident "[" [ expression_list ] "]". + def function_call(self): + return + + # return_statement = "@" expression. + def return_statement(self): + return + +class ParseTree: + diff --git a/src/front/parser/__init__.py b/src/front/parser/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/front/symbols.py b/src/front/symbols.py new file mode 100644 index 0000000..f4ab40e --- /dev/null +++ b/src/front/symbols.py @@ -0,0 +1,9 @@ +class SymbolTable: + def __init__(self): + return + + def put(token, id): + return + + def get(token): + return diff --git a/src/front/symbols/__init__.py b/src/front/symbols/__init__.py deleted file mode 100644 index e69de29..0000000 -- cgit v1.2.3