The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

15
The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345

Transcript of The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

Page 1: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

TheMeta-Environment

Márcio Coelho PG16046André Rocha PG12345

Page 2: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

• ASF - Algebraic Specification Formalism

• SDF - Syntax Definition Formalism

• Rascal

Page 3: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

ASF

• Algebraic Specification Formalism

• Permite rescrita de termos e travessia de arvores genéricas

Page 4: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

SDF

• Syntax Definition Formalism

• SDF é mais rica que BNF

Page 5: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

module basic/Booleansexports sorts Boolean context-free start-symbols Booleancontext-free syntax "true" -> Boolean "false" -> Boolean lhs:Boolean "|" rhs:Boolean -> Boolean {left} lhs:Boolean "&" rhs:Boolean -> Boolean {left} "not" "(" Boolean ")" -> Boolean "(" Boolean ")" -> Boolean context-free priorities Boolean "&" Boolean -> Boolean > Boolean "|" Boolean -> Boolean

Page 6: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

Operações

• Parser

• Análise de código

• Transformação de código

• Criação, implementação e compilação de DSL

Page 7: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

IDE

Page 8: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

Anatomia

Page 9: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

Estrutura de um Modulo

module ModuleName ImportSection* ExportOrHiddenSection*equations ConditionalEquation*

Page 10: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

Exemplo ASF+SDF

Page 11: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

Import MyBooleansimports basic/Whitespaceimports basic/Booleans

exportscontext-free syntax

Boolean “xor” Boolean --> Boolean

hiddenscontext-free start-symbols Boolean

Page 12: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

Equations[xor-1] true xor true = false[xor-2] true xor false = true[xor-3] false xor true = true[xor-4] false xor false = false

Page 13: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

CMinus

Page 14: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

module Desktop/Cminus/Types

exports

sorts TYPEcontext-free syntax    "char"         -> TYPE    "int"         -> TYPE    "nil-type"    -> TYPE

module Desktop/Cminus/Iden

exportssorts ID    lexical syntax    [a-z][a-zA-Z0-9]* -> ID

context-free restrictions ID -/- [a-zA-Z0-9]

Page 15: The Meta-Environment Márcio Coelho PG16046 André Rocha PG12345.

context-free syntax

DECLARATION+                -> PROGRAM

context-free syntax

VARIABLE                                -> DECLARATIONFUNCTION                                -> DECLARATION

context-free syntax

TYPE ID ";"                             -> VARIABLE

context-free syntax

TYPE ID         "(" ( FORMALPARAMETER ("," FORMALPARAMETER)* )?  ")"    BLOCK                                -> FUNCTION

context-free syntax

TYPE ID                                  -> FORMALPARAMETER

context-free syntax

"{" VARIABLE* STAT* "}"                 -> BLOCK