Suite : dans ton cas, je dirais que les unités lexicales sont les suivantes (description par des expressions régulières) :
NOMBRE_DEC = [0-9]+ /* Une suite de chiffres */
NOMBRE_BIN = %[0-1]+ /* Une suite de 0 ou 1 précédée d’un « % » */
NOMBRE_HEX = $[0-9a-fA-F]+
IDENTIFICATEUR = [a-zA-Z][a-zA-Z_0-9]* /* Une lettre suivie de n’importe quel caractère alphanumérique ASCII ou « _ » */
MULT = '*'
DIV = '/'
PLUS = '+'
MINUS = '-'
LSL = '<<'
LSR = '>>'
COMMA = ','
DOT = '.'
OPEN_B = '('
CLOSE_B = ')'
SHARP = '#'
J’oublie peut-être des trucs, mais ça se rajoute facilement. Après il y a des trucs qui peuvent se discuter : est-ce qu’on identifie les indicateurs de taille (b, w et l) dès l’analyse lexicale ou pas ? Je pense qu’on peut.
Ta première tâche sera de lire le texte caractère par caractère et d’identifier les unités lexicales les unes après les autres. Par exemple le programme suivant sera lu comme ça :
move.w #1234, d0
rts
IDENTIFICATEUR "move"
DOT
SIZE "w"
SHARP
NUMBER "1234"
COMMA
IDENTIFICATEUR "d0"
NEWLINE
IDENTIFICATEUR "rts"
À partir de là ce sera plus pratique pour bosser. En quelque sorte, tu as identifié les différents mots possibles du langage, et maintenant tu vas regarder quelles sont les phrases que tu peux former.