我正在尝试编写我的第一个Python程序 - 一个将解析源文件(javascript)并创建某种类型的交叉引用报告。
我想保存所有变量和函数的以下信息:
无法保证每个变量只被声明一次。 (我确实有一些清理工作。)
有人可以建议我在遍历输入文件时如何保存详细信息吗?
我的操作系统是Win 10,我使用的是3.6
答案 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()
但实际上,请亲自动手:编写一些打开文件的代码,遍历字符,然后对它们执行某些操作(将它们分组为标记)。