Skip to content

Compilatore Toy2 per il corso di compilatori all'università degli studi di Salerno

Notifications You must be signed in to change notification settings

benedettoscala/Toy2Compiler

Repository files navigation

Compilatore Toy2

Progetto di Benedetto Scala e Leopoldo Todisco per il corso di Compilatori.
Per eseguire il progetto occorre usare Java 17 e maven 3.8


Specifiche Lessicali

In questa sezione vi sono tutti i token e i corrispettivi lessemi.
Le regole di inferenza si possono trovare nel file pdf inviato con il link della repository.

Token Lessema
VAR var
ID [A-Za-z_][A-Za-z0-9_]*
INTEGER integer
REAL real
STRING string
LPAR (
RPAR )
FUNC func
ENDFUNC endfunc
TYPERETURN ->
READ <--
WRITERETURN -->!
WRITE -->
DOLLARSIGN $
OUT out
PROC proc
ENDPROC endproc
IF if
THEN then
ELSE else
ELSEIF elseif
DO do
ENDWHILE endwhile
ENDIF endif
PLUS +
MINUS -
DIV /
TIMES *
NEQ <>
EQ =
ASSIGN ^=
LT <
GT >
LE <=
GE >=
REF @
NOT !
OR ||
AND &&
SEMI ;
COLON :
COMMA ,
ENDVAR \
TRUE true
FALSE false

Grammatica


precedence left OR;
precedence left AND;
precedence right NOT;
precedence nonassoc EQ, NE, LT, LE, GT, GE;
precedence left PLUS, MINUS;
precedence left TIMES, DIV;

Program ::= IterWithoutProcedure Procedure Iter;

IterWithoutProcedure ::= VarDecl IterWithoutProcedure
| Function IterWithoutProcedure
| /* empty */ ;

Iter ::= VarDecl Iter
| Function Iter
| Procedure Iter
| /* empty */ ;

VarDecl ::= VAR Decls;

Decls ::= Ids COLON Type SEMI Decls
| Ids:ids ASSIGN Consts:consts SEMI Decls:decls
| Ids:ids COLON Type:tipo SEMI ENDVAR
| Ids:ids ASSIGN Consts:consts SEMI ENDVAR

Ids ::= ID:id COMMA Ids:ids
| ID:id;

Consts ::= Const:costante COMMA Consts:listaCostanti
| Const:costante;

Const ::= REAL_CONST:lessema
| INTEGER_CONST
| STRING_CONST
| TRUE
| FALSE ;

Type ::= REAL
| INTEGER
| STRING
| BOOLEAN ;

Function ::= FUNCTION ID LPAR FuncParams RPAR TYPERETURN Types

FuncParams ::= ID COLON Type OtherFuncParams
| /* empty */;

OtherFuncParams ::= COMMA ID COLON Type OtherFuncParams:paramsList
| /* empty */;

Types ::= Type COMMA Types
| Type;

Procedure ::= PROCEDURE ID LPAR ProcParams RPAR COLON Body ENDPROCEDURE

ProcParams::= ProcParamId COLON Type OtherProcParams
| /* empty */ ;

OtherProcParams ::= COMMA ProcParamId COLON Type OtherProcParams
| /* empty */;

ProcParamId ::= ID
| OUT ID;

Body ::= VarDecl Body
| Stat Body
| /* empty */;

Stat ::= Ids ASSIGN Exprs SEMI
| ProcCall SEMI
| RETURN Exprs SEMI
| WRITE IOArgs SEMI
| WRITERETURN IOArgs SEMI
| READ IOArgs SEMI
| IfStat SEMI
| WhileStat SEMI;

FunCall ::= ID LPAR Exprs RPAR
| ID LPAR RPAR;

ProcCall ::= ID LPAR ProcExprs RPAR
| ID LPAR RPAR;

IfStat ::= IF Expr THEN Body Elifs Else ENDIF;

Elifs ::= Elif Elifs
| /* empty */;

Elif ::= ELIF Expr THEN Body

Else ::= ELSE Body
| /* empty */;

WhileStat ::= WHILE Expr DO Body ENDWHILE;

IOArgs ::= IOArgsExpr IOArgs
| DOLLARSIGN LPAR Expr RPAR IOArgs | /* empty */;

IOArgsExpr ::= ID
| STRING_CONST
| IOArgsExpr PLUS IOArgsExpr;

ProcExprs::= Expr COMMA ProcExprs
| REF ID COMMA ProcExprs
| Expr
| REF ID;

Exprs ::= Expr COMMA Exprs
| Expr;

Expr ::= FunCall
| REAL_CONST
| INTEGER_CONST
| STRING_CONST
| ID
| TRUE
| FALSE
| Expr PLUS Expr
| Expr MINUS Expr
| Expr TIMES Expr
| Expr DIV Expr
| Expr AND Expr
| Expr OR Expr
| Expr GT Expr
| Expr GE Expr
| Expr LT Expr
| Expr LE Expr
| Expr EQ Expr
| Expr NE Expr
| LPAR Expr RPAR
| MINUS Expr
| NOT Expr;


About

Compilatore Toy2 per il corso di compilatori all'università degli studi di Salerno

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published