Deje el nombre para el programa de análisis dado en
el declaración
de %name para ser cerca denotada { n } y el nombre del archivo de la
especificación sea denotado por { nombre de espec. } el generador del programa
de análisis crea un functor nombrado { el n}LrValsFun para los valores necesitó
para un programa de análisis particular. Este functor se coloca adentro { espec.
name}.sml. Este functor contiene un símbolo de la estructura que permite que
usted construya los terminales de los valores apropiados. La estructura tiene
una función para cada terminal que tome un tuple que consiste en el valor para
el terminal (si hay cualquiera), una posición extrema izquierda para el terminal,
y una posición de derecha para el terminal y construya el terminal de estos
valores.
Una firma para el símbolo de la estructura se crea y se coloca en el archivo del
'' de ``.sig creado por ML-Yacc-Yacc. Esta firma es { los n}_TOKENS, donde { n }
está el nombre dado en la especificación del programa de análisis. Una firma {
los n}_LRVALS se crean para la estructura producida aplicándose { n}LrValsFun.
Utilice la firma { n}_TOKENS para crear un functor para el analizador léxico que
toma el símbolo de la estructura como discusión. La firma { los n}_TOKENS no
cambiarán a menos que el declaración
de %term en una especificación sea
alterado agregando los terminales o cambiando los tipos de terminales. Usted no
necesita recompile el functor léxico del analizador cada vez que la
especificación para el programa de análisis se cambia si la firma { los n}_TOKENS
no cambian.
Si usted está utilizando Ml-Lex para crear el analizador léxico, usted puede dar
vuelta a la estructura del lexer en un functor usando
el declaración de
%header. %header permite que el usuario defina el jefe para un cuerpo
de la estructura.
Si el nombre del programa de análisis en la especificación fuera Calc, usted
agregaría este declaración a la especificación para el analizador léxico:
%header (símbolo de CalcLexFun(structure del functor: Calc_TOKENS))
Usted debe definir el siguiente en la sección de las definiciones del usuario:
mecanografíe la posición
Éste es el tipo de valores de la posición para los terminales. Este tipo debe
ser igual que el que esta' declarado en la especificación para la gramática.
Nota, sin embargo, que este tipo no está disponible en la estructura del símbolo
que da parámetros el functor del lexer.
Usted debe incluir el código siguiente en la sección de las definiciones del
usuario de la especificación Ml-Lex:
mecanografíe el símbolo del svalue = del tipo de Tokens.svalue (' a, 'b) = (' a, 'b) lexresult del tipo de Tokens.token = (svalue, posición) símbolo
Estos tipos se utilizan para dar firmas de los lexers.
Usted puede utilizar un lexer construido usando Ml-Lex con
el declaración
de %arg, pero usted debe seguir las instrucciones especiales para atar el
programa de análisis y el lexer junto.