self.statemachine = {
'current': {
'state': 'default', 'content': '', 'line': 0},
'default': [
{'name': 'open', 'next': 'php', 'extra': 0, 'start': 0, 'end': 0, 'cache': '',
'token': r'<\?'},
{'name': 'open', 'next': 'php', 'extra': 0, 'start': 0, 'end': 0, 'cache': '',
'token': r'<\?php'}],
'php': [
{'name': 'close', 'next': 'default', 'extra': 0,
'token': r'\?>', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'lnum', 'next': '', 'extra': 0, 'start': 0, 'end': 0, 'cache': '',
'token': r'[0-9]+'},
{'name': 'dnum', 'next': '', 'extra': 0, 'start': 0, 'end': 0, 'cache': '',
'token': r'([0-9]*\.[0-9]+)|([0-9]+\.[0-9]*)'},
{'name': 'exponent', 'next': '', 'extra': 0, 'start': 0, 'end': 0, 'cache': '',
'token': r'(([0-9]+|([0-9]*\.[0-9]+)|([0-9]+\.[0-9]*))[eE][+-]?[0-9]+)'},
{'name': 'hnum', 'next': '', 'extra': 0, 'start': 0, 'end': 0, 'cache': '',
'token': r'0x[0-9a-fA-F]+'},
{'name': 'bnum', 'next': '', 'extra': 0, 'start': 0, 'end': 0, 'cache': '',
'token': r'0b[01]+'},
{'name': 'label', 'next': '', 'extra': 0, 'start': 0, 'end': 0, 'cache': '',
'token': r'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'},
{'name': 'comment', 'next': 'commentline', 'extra': 1,
'token': r'//', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'comment', 'next': 'commentline', 'extra': 1,
'token': r'#', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'comment', 'next': 'comment', 'extra': 1,
'token': r'/\*', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'string', 'next': 'string1', 'extra': 1,
'token': r'\'', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'string', 'next': 'string2', 'extra': 1,
'token': r'"', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'symbol', 'next': '', 'extra': 0, 'start': 0, 'end': 0, 'cache': '',
'token': r'[\\\{\};:,\.\[\]\(\)\|\^&\+-/\*=%!~$<>\?@]'}],
'string1': [
{'name': 'string', 'next': 'php', 'extra': 0,
'token': r'\'', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'string', 'next': 'escape1', 'extra': 1,
'token': r'\\', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'string', 'next': '', 'extra': 1,
'token': r'', 'start': 0, 'end': 0, 'cache': ''}],
'escape1': [
{'name': 'string', 'next': 'string1', 'extra': 1,
'token': r'.', 'start': 0, 'end': 0, 'cache': ''}],
'string2': [
{'name': 'string', 'next': 'php', 'extra': 0,
'token': r'\'', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'string', 'next': 'escape2', 'extra': 1,
'token': r'\\', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'string', 'next': '', 'extra': 1,
'token': r'', 'start': 0, 'end': 0, 'cache': ''}],
'escape2': [
{'name': 'string', 'next': 'string2', 'extra': 1,
'token': r'.', 'start': 0, 'end': 0, 'cache': ''}],
'commentline': [
{'name': 'comment', 'next': 'php', 'extra': 0,
'token': r'(\r|\n|\r\n)', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'comment', 'next': 'php', 'extra': 0,
'token': r'', 'start': 0, 'end': 0, 'cache': ''}],
'comment': [
{'name': 'comment', 'next': 'php', 'extra': 0,
'token': r'\*/', 'start': 0, 'end': 0, 'cache': ''},
{'name': 'comment', 'next': '', 'extra': 1,
'token': r'', 'start': 0, 'end': 0, 'cache': ''}]} 以上就是解析转换器3:手写PHP转Python编译器的词法部分的详细内容,更多请关注Gxl网其它相关文章!
查看更多关于解析转换器3:手写PHP转Python编译器的词法部分的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did85690