Skip to content

MarcosSpessatto/Compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Transpiler from CT language to Java

Transpiler written using (Jflex and Byacc/J) , for academic purposes of computer science course.

#RUN jflex LexicalAnalyzer.flex
yacc -J Parser.y
javac *.java
java Parser file

####Syntax of Ct Language // Programa de teste da Linguagem CT

// Declaracao de Classes

classe Aluno {
inteiro num, num_notas
vetor inteiro notas[30]

// funcoes da classe aluno

real media()
{
	inteiro total, i
	real media

	se (i=2) {
		i<-3
	}
	total<-0 
	i<-0

	enquanto (i<num_notas) 
	{ 
		total<-total+notas[i]
		i<-i+1
	}

	media<-total/i

	_ media
}

inteiro adiciona(inteiro nota)
{
	se ( num<30 ) {
		notas[num_notas]<-nota
		num_notas<-num_notas+1
		_ 1
	} senao {
		escrever("erro")
		_ -1
	} 
}

nulo aluno() 
{
	inteiro i

	para(i<-0 ate i<30 passo i<-i+1 ) {
		notas[i]<-0
	}

	num_notas<-0
	num<-0
}

}

subclasse aluno1 {aluno} {

inteiro propinas
inteiro pago

// funcoes da classe aluno1

nulo aluno1()
{
	propinas<-0
	pago<-0
}

inteiro deve()
{
	inteiro temp

	temp<-propinas-deve

	escrever(temp)
	_ temp
}

}

classe testa{

funcao_principal {
	real b
	aluno1 al1

	b <- al1.media()

	escrever(b)

	al1.propina<-100000
	al1.pago<-25000
	al1.deve()
}

}

classe Teste {

funcao_principal {

	inteiro numero1
	inteiro numero2
	String nome

	numero1 <- 10
	numero2 <- 2 * (10 - 5 + (3 * (15-1)))

	nome <- "Marcos Defendi"
	numero1 <- nome.length
	nome <- nome.trim()

	se (numero1 > (numero2 * (numero1 / 2.0))){
		escrever("Entrou no if." + numero1 + "" + numero2)
	} senao {
		escrever("Entrou no else.")
	}

	_

}

}

Releases

No releases published

Packages

No packages published