Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Necesito ayuda para integrar un generador de c digo ( genera un c digo objeto . o del c digo C le do desde un
Necesito ayuda para integrar un generador de cdigo genera un cdigo objeto o del cdigo C ledo desde un txt en este analizador lxico sintctico y semntico: import re import tkinter as tk from tkinter import filedialog, Text import pandas as pd import numpy as np # Analizador lxico LEXERTABLE pdDataFramecolumnasTOKEN 'IDENTITY' indexrange def lexercdigo: SMBOLOS ;: SYMBOLS;: SYMBOLSDUP Abrir corchetes', Cerrar corchetes', Punto y coma', ;ComaDolo:Comilla simple', msigualmayor palabras clave entero 'principal', 'mientras', 'comienzo', 'fin', 'expr', 'Procedimiento', Si 'elseif', 'else' 'entonces', 'printf', yo palabras clavedef t 'integer'm 'principal'l 'mientras'b 'comienzo'd 'fin'e 'expr'soonp 'Procedimiento'xIfz 'elseif' ymsf 'entonces'c 'printf'&yo o PALABRAS CLAVE SMBOLOS palabras clave espacioblanco lexema tokens cdigo code.replacet para i char en enumerarcdigo: if char espacioblanco: lexema char if i lencdigo: if cdigoi espacioblanco o cdigoi en PALABRAS CLAVE o lexema en PALABRAS CLAVE: if lexema : tokens.appendlexemereplace lexema j para i en tokens: para k en SYMBOLSDUP: si i k: LEXERTABLE.atj TOKEN' i LEXERTABLE.atj 'IDENTITY' k j descanso si i en palabras clave: LEXERTABLE.atj 'TOKEN' i LEXERTABLE.atj 'IDENTITY 'Palabra clave' j continuar si iisdigit: LEXERTABLE.atj 'TOKEN' i LEXERTABLE.atj 'IDENTITY'Dgito j continuar elif No estoy en PALABRAS CLAVE: LEXERTABLE.atj 'TOKEN' i LEXERTABLE.atj 'IDENTITY' 'Identificador' j printfLexer Tokens: tokens # Salida de depuracin tokens de retorno # Analizadores de sintaxis y semntica ejemplo simplificado EPSILON epsi gramtica SEEETETTTF TFFEFid def getproductionsX: producciones para prod en gramtica: lhs rhs prod.split if lhs X: rhs rhs Productions.appendjoinlhs rhs return producciones def cierreI: para produccin a en I: if produccinendswith: continuar lhs rhs produccinsplit alfa, Bbeta rhssplit B Bbeta beta Bbeta: betaa a si beta: betaa betaa firstbetaa firstbetaa for b in firstbetaa: Bproductions getproductionsB for gamma in Bproductions: newitem gamma b if newitem not in I: I appendnewitem return Definitivamente getsymbolsgrammar: terminales set nonterminals set para produccin en gramtica: lhs rhs production.split nonterminals.addlhs for x in rhs: terminales.addx terminales terminales.differencenonterminals terminales.add$ devuelve terminales, nonterminals def firstsymbols: finalset set para X en smbolos: firstset set if isTerminalX: finalset.addX else: para produccin en gramtica: lhs rhs production.split if lhs X: para i en rangolenrhs: y rhsi si y X: continuar firsty firsty si EPSILON en firsty: firsty firstyreplaceEPSILON firstset.addfirsty continuar de lo contrario: firstset.addfirsty romper para i en firstset: si EPSILON no est en i: finalset.addi ms: i ireplaceEPSILON finalset.addi return joinlistfinalset def isTerminalsymbol : smbolo de retorno en terminales def shiftdotproduccin: lhs rhs production.split x y rhssplit
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started