Вы находитесь на странице: 1из 9

Instituto Tecnolgico de

Comitn
Tema:
ISC-DRAW

Documentacin del Lenguaje de


Programacin
Materia:

Lenguajes y Autmatas 1
Facilitador:

Ing. Ramos Alfonzo Jos Rafael


Trabajo que Presentan:

Guilln Hernndez Luis Uriel


Gutirrez Nez Williams
Cuauhtmoc
Rodrguez Prez Juan Edilser
Comitn de Domnguez, Chiapas a 01 de Junio de 2015

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

Es aquella que computa la informacin adicional necesaria para el


procesamiento de un lenguaje, una vez que la estructura sintctica de
un programa haya sido obtenida. Es por tanto la fase posterior a la de
anlisis sintctico y la ltima dentro del proceso de sntesis de un
lenguaje de programacin. La semntica de un lenguaje de
programacin es el conjunto de reglas que especifican el significado de
cualquier sentencia sintcticamente vlida. El anlisis semntico de un

procesador de lenguaje es la fase encargada de detectar la validez


semntica de las sentencias aceptadas por el analizador sintctico.

Acerca de

ISC-DRAW

Es un lenguaje de programacin diseado para la creacin de figuras;


como lo son:
Rectngulo,
Crculo,
Triangulo y
Cuadrado.
Adems se puede manejar el atributo de color, en el cual se
escribe el nombre del color a utilizar; existen ciertos colores que son
aceptados por el lenguaje de programacin lo cual se describir ms
adelante. Este lenguaje de programacin a comparacin de Java o C, no
necesita de un punto y coma al final de cada instruccin, lo que hace
este lenguaje es leer lnea por lnea, es decir, toma como delimitador de
instruccin cuando detecta un salto de lnea. Para la separacin de
atributos el lenguaje de programacin toma en cuenta la presencia del
smbolo de mayor qu > y cada vez que encuentre dicho smbolo en
una lnea va guardando cada atributo. Tambin cabe aclarar que no se
debe poner este smbolo al final de una lnea, pues eso no est
permitido.
Evaluacin de estructuras:
Se evala en primer lugar las palabras reservadas color o algn
nombre de figura.
Las estructuras se leen lnea por lnea.
Se evala que no se tengan nmeros negativos.
Se evala que los valores de los parmetros no sobrepasen los 700
pxeles.
Figuras:

IX

Sirve para declarar ciertas figuras que sern dibujadas de acuerdo


a los atributos o dimensiones que se le asignen.
Solo acepta las figuras definidas para este lenguaje.

Todas las coordenadas deben ser diferentes para evitar lneas o


puntos.
Color:
Sirve para declarar un color a ciertas figuras, el color se asignar a
las figuras que vayan despus de esta declaracin.
Solo acepta los colores permitidos y marcar error con cualquier
otra palabra especialmente no recibe un atributo de nombre color
porque provocara recursividad.

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

Para este lenguaje se utilizan los caracteres alfanumricos es decir


caracteres de la a a la z y nmero de 0 a 9.

Para hacer la separacin de las palabras reservadas y los atributos de


estas se utiliza el signo de mayor que > en este lenguaje de
programacin no importa cuntos espacios se ponga al escribir el cdigo
fuente.
El lenguaje de programacin lee lnea por lnea cada parte del cdigo
as si se suscitara algn error se podra mandar un mensaje de error
especificando en que parte del cdigo se encuentra el desperfecto.
Para este lenguaje de programacin no se utilizan estructuras de control,
puesto que lo que hacemos es crear figuras y colorearlas.
Adems se permite la insercin de comentarios mediante #.

Cdigo:

IX

public class interfazFinal extends JFrame implements ActionListener {


Analizador_Lexico dataLex = new Analizador_Lexico();
JTerminal terminal;
JPanel superior,medio,inferior,panel;
JTextArea fieldTxt;
JScrollPane jsp,scrol;
JButton run,open;
JLabel write,laberrors;
JTextArea txp;
JFileChooser abrirArchivo;
String texto;
public interfazFinal(){
super("Analizador Lxico y Sintctico");
inferior = new JPanel();
fieldTxt = new JTextArea();
panel = new javax.swing.JPanel();
run = new JButton("Ejecutar");
run.setEnabled(false);
open = new JButton("Abrir");
jsp = new JScrollPane();
write = new JLabel();
laberrors = new JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_C
LOSE);
setAutoRequestFocus(false);
panel.setBackground(new Color(190,216,240));
panel.setBorder(javax.swing.BorderFactory.createCompoundBorder(
null, javax.swing.BorderFactory.createCompoundBorder()));
panel.setDebugGraphicsOptions(javax.swing.DebugGraphics.NONE_
OPTION);
panel.setDoubleBuffered(false);
panel.setEnabled(false);

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

int seleccion = abrirArchivo.showOpenDialog( this );


if( seleccion == JFileChooser.APPROVE_OPTION )
File f = abrirArchivo.getSelectedFile();
try
{
String nombre = f.getName();
String path = f.getAbsolutePath();
String contenido = getArchivo( path );
this.setTitle( nombre );
fieldTxt.setText( contenido );
}catch( Exception exp){}
}
}else if( pri.getText().equals( "Ejecutar" )){
terminal.print("");
terminal.clean();
texto ="";
texto = fieldTxt.getText();
try{
dataLex.txtIn(texto,terminal);

}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

maryr_. (2013). Actividad 2 Analizador lxico, sintctico y


semntico. 16 de Marzo de 2014, de Slideshare Sitio web:
http://es.slideshare.net/maryr_/actividad-2-analizador-lxicosintctico-y-semntico