我如何用Python表示我的数据?

时间:2017-10-28 14:20:44

标签: python

我正在尝试编写我的第一个Python程序 - 一个将解析源文件(javascript)并创建某种类型的交叉引用报告。

我想保存所有变量和函数的以下信息:

  • 变量名称
  • 类型(变量或功能)
  • Line Declared
  • 范围 - 可以将其合并到名称字段中 - 例如主:: MYVAR
  • 初始值
  • Line(s)Modified
  • 参考线

无法保证每个变量只被声明一次。 (我确实有一些清理工作。)

有人可以建议我在遍历输入文件时如何保存详细信息吗?

我的操作系统是Win 10,我使用的是3.6

1 个答案:

答案 0 :(得分:0)

听起来你正在开始漫长的旅程。如果要解析源代码文件,首先必须对其进行标记。这是一个标记一个简单算术表达式的函数,以帮助您入门。

OPERATORS = '+', '-', '*', '/'

def tokenize(expression):
    def state_none(c):
        if c.isdecimal():
            self.token = c
            self.state = state_number
        elif c in OPERATORS:
            self.token = 'operator', c
            self.token_ready = True

    def state_number(c):
        if c.isdecimal():
            self.token += c
        else:
            self.char_consumed = False
            self.token = 'number', self.token
            self.token_ready = True
            self.state = state_none

    def interpret_character(c):
        self.token_ready = False
        self.char_consumed = True
        self.state(c)

    class self:
        token_ready = False
        token = None
        char_consumed = True
        state = state_none

    for c in expression:
        self.char_consumed = False
        while not self.char_consumed:
            interpret_character(c)
            if self.token_ready:
                yield self.token
    if self.state == state_number:
        yield 'number', self.token

def main():
    for x in tokenize('15+ 2 * 378 / 5'):
        print(x)

    # ('number', '15')
    # ('operator', '+')
    # ('number', '2')
    # ('operator', '*')
    # ('number', '378')
    # ('operator', '/')
    # ('number', '5')

if __name__ == "__main__":
    main()

但实际上,请亲自动手:编写一些打开文件的代码,遍历字符,然后对它们执行某些操作(将它们分组为标记)。