lex&yacc with Ply

1. lex 詞法分析

 

    A. define token
       
        1.token format

 

             a. key words

 

114 tokens = [
115    'COMMA',
116    'SEMICOLON',
117    'EQUAL',
118    'LPAREN',
119    'RPAREN',
120    'LBRACE',
121    'RBRACE',
122    'LESS',
123    'LARGE',
124    'ASTERISK',
125    'COMMENT',
126    'UINT_LIT',
127    'STRING_LIT',
128 ]

 

b.Regular expression rules for simple tokens

 

133 t_COMMA = r','
134 t_SEMICOLON = r';'
135 t_EQUAL = r'='
136 t_LPAREN = r'/('
137 t_RPAREN = r'/)'
138 t_LBRACE = r'/{'
139 t_RBRACE = r'/}'
140 t_LESS = r'<'
141 t_LARGE = r'>'
142 t_UINT_LIT = r'[-0-9][0-9]*'

 

    B. define token action

 

          1. A regular expression rule with some action code

 

145 def t_EVAL(t):
146     r'EVAL/[[^/]]*/]'
147     t.value = t.value[5:-1]
148     t.type='STRING_LIT'
149     return t

 

2. yacc 語法分析

 

238 def p_MO_L(t):
239     """MO_L   :   MO
240               |   MO_L MO"""
241     if len(t) == 3:
242         t[0] = t[2]
243
244 def p_MO(t):
245     """MO :   MANAGED_OBJECT EQUAL MONAME LBRACE ATTR_L RBRACE"""
246     add_mo(mo)

發佈了65 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章