繁体   English   中英

如何用Python表示数据?

[英]How Can I represent my data in Python?

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

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

  • 变量名
  • 类型(变量或函数)
  • 行声明
  • 范围-可以将其合并到“名称”字段中-例如Main :: myvar
  • 初始值
  • 线路已修改
  • 引用的行

不能保证每个变量只声明一次。 (我有一些清理工作要做。)

谁能建议我遍历输入文件时如何保存详细信息?

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

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

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()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM