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)