Академический Документы
Профессиональный Документы
Культура Документы
Comitn
Tema:
ISC-DRAW
Lenguajes y Autmatas 1
Facilitador:
Av. Instituto Tecnolgico Km. 3.5 Colonia Yocnajab el Rosario. C.P. 30000
Telfono: 01 963 63 2 25 17
www.itcomitan.edu.mx
Marco Terico:
Analizador Lxico:
Es la primera fase de un compilador, lee caracteres de entrada
para formar componentes e identificarlos o clasificarlos y pasar la
informacin de los componentes al analizador sintctico. Adems realiza
funciones como eliminar espacios en blanco, saltos de lnea,
tabuladores, ignorar comentarios, deteccin y recuperacin de errores.
Los errores que reconoce son smbolos no vlidos o no reconocidos por
el lxico del lenguaje o que forman parte de ningn componente lxico.
Analizador Sintctico:
Permite definir un lenguaje mediante reglas que nos permiten
generar o producir cadenas de un lenguaje, estas gramticas son
similares a las gramticas de los lenguajes naturales, pero mucho ms
restrictivas y sencillas. El anlisis sintctico tambin es un estado inicial
del anlisis de frases de lenguaje natural. Los analizadores sintcticos
fueron extensivamente estudiados durante los aos 1970, detentndose
numerosos patrones de funcionamiento en ellos, cosa que permiti la
creacin de programas generadores de analizadores sintcticos a partir
de una especificacin de la sintaxis del lenguaje en forma Backus-Naur.
Analizador Semntico:
IX
Acerca de
ISC-DRAW
IX
Reglas:
Las palabras reservadas van acompaadas de atributos que el usuario
defina. No es necesario declarar variables, por lo tanto tampoco es
necesario que se inicialice nada.
Palabras Reservadas
color
linea
circulo
rectangulo
texto
triangulo
ventana
borde
negro
rojo
azul
amarillo
verde
cafe
morado
blanco
naranja
gris
celeste
rosa
Caracteres permitidos
De a z
De 0- 9
> ( mayor que)
#
IX
Cdigo:
IX
IX
panel.setFocusable(false);
inferior.setBackground(new Color(190,216,240));
inferior.setBorder(javax.swing.BorderFactory.createCompoundBorde
r(null, javax.swing.BorderFactory.createCompoundBorder()));
inferior.setDebugGraphicsOptions(javax.swing.DebugGraphics.NON
E_OPTION);
inferior.setDoubleBuffered(false);
inferior.setEnabled(false);
inferior.setFocusable(false);
fieldTxt.setColumns(20);
fieldTxt.setFont(new java.awt.Font("Arial", 3, 12));
fieldTxt.setLineWrap(true);
fieldTxt.setRows(5);
fieldTxt.setWrapStyleWord(true);
fieldTxt.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyReleased(java.awt.event.KeyEvent evt) {
fieldTxtKeyReleased(evt);}
});
jsp.setViewportView(fieldTxt);
run.setBackground(new java.awt.Color(51, 204, 0));
run.setFont(new java.awt.Font("Arial", 0, 14));
run.addActionListener(this);
open.setBackground(new java.awt.Color(190, 237, 253));
open.setFont(new java.awt.Font("Arial", 0, 14));
open.addActionListener(this);
write.setFont(new java.awt.Font("Arial", 0, 14));
write.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
write.setText("Area Escritura");
laberrors.setFont(new java.awt.Font("Tahoma", 1, 14));
laberrors.setForeground(new java.awt.Color(255, 0, 51));
laberrors.setText("errores");
laberrors.setVerticalAlignment(javax.swing.SwingConstants.TOP);
terminal = new JTerminal();
scrol = new JScrollPane(terminal);
inferior.setLayout(new BorderLayout());
inferior.add(scrol);
inferior.setBounds(0, 480, 375, 170);
add("South",inferior);
javax.swing.GroupLayout PanelLayout = new
javax.swing.GroupLayout(panel);
panel.setLayout(PanelLayout);
PanelLayout.setHorizontalGroup(
PanelLayout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
PanelLayout.createSequentialGroup() .addGap(25, 25, 25)
IX
.
addGroup(PanelLayout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.TRAILING)
.addComponent(jsp)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
PanelLayout.createSequentialGroup()
.addComponent(write)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(PanelLayout.createSequentialGroup()
.addComponent(open,
javax.swing.GroupLayout.PREFERRED_SIZE,
97,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(125, 125, 125)
.addComponent(run,
javax.swing.GroupLayout.PREFERRED_SIZE,
97,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(29, 29, 29))
.addGroup(PanelLayout.createSequentialGroup()
.addGap(158, 158, 158)
.addComponent(laberrors)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)));
PanelLayout.setVerticalGroup(
PanelLayout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(PanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(PanelLayout.createParallelGroup(javax.swing.GroupLayout.Ali
gnment.BASELIN)
.addComponent(open)
.addComponent(run))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlaceme
nt.UNRELATED)
.addComponent(write)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlaceme
nt.RELATED)
.addComponent(jsp,
javax.swing.GroupLayout.PREFERRED_SIZE,
376,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlaceme
nt.RELATED)
.addComponent(laberrors,
javax.swing.GroupLayout.PREFERRED_SIZE,
14,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)));
javax.swing.GroupLayout
layout
=
new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L
EADING)
.addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L
EADING)
.addGroup(layout.createSequentialGroup()
.addComponent(panel,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 164, Short.MAX_VALUE))
);
pack(); }
private void fieldTxtKeyReleased(KeyEvent evt) {
String checar = fieldTxt.getText();
if(!checar.equals("")){
if(checar.length() > 4){
run.setEnabled(true);
}else{
run.setEnabled(false);
}
}else{
run.setEnabled(false);
}
}
@Override
public void actionPerformed(ActionEvent ae) {
JButton btn = (JButton)ae.getSource();
JButton pri=(JButton)ae.getSource();
if( btn.getText().equals( "Abrir" ) )
{
if( abrirArchivo == null ) abrirArchivo = new JFileChooser();
abrirArchivo.setFileSelectionMode( JFileChooser.FILES_ONLY );
IX
}catch(IOException e){
System.out.println("Error: "+e);
}
texto = "";
} }
public String getArchivo( String ruta ){
FileReader fr = null;
BufferedReader br = null;
String contenido = "";
try
{
fr = new FileReader( ruta );
br = new BufferedReader( fr );
String linea;
while( ( linea = br.readLine() ) != null ){
contenido += linea + "\n";
}
}catch( Exception e ){ }
finally
{
try{
br.close();
}catch( Exception ex ){}
}
return contenido; }
public static void main(String [] Args){
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
interfazFinal frame = new interfazFinal();
frame.setVisible(true);
} catch (Exception e) {
}
}
}); } }
Referencias:
Alpinu. (2015). Analizador Sintctico. 03 de Febrero de 2015, de
Wikipedia Sitio web: http://es.wikipedia.org/wiki/Analizador_sint
%C3%A1ctico
IX