Pular para o conteúdo

Gramática — Módulos

3 produções: adopt, relay e mark. Cada exemplo é aceito pelo parser.

Três palavras ligam arquivos: adopt traz, relay declara o que sai, e mark aplica um decorador.

ProduçãoNós que ela produz
adoptAdoptStatement
relayRelayStatement
markMarkDecorator

adopt#

text
adocao        = "adopt" caminho [ "as" nome ]
              | "adopt" caminho "." "{" nome { "," nome } "}"
              | "adopt" "{" nome "as" nome { "," … } "}" "from" caminho ;
caminho       = nome { "." nome } | ( "./" | "../" ) segmento { "/" segmento } ;
dataforge
adopt Arcane.Math as M
adopt Arcane.Math.{sqrt, floor}
adopt {sqrt as raiz} from Arcane.Math

relay#

text
exportacao    = "relay" saida { "," saida } | "relay" "from" caminho ;
saida         = nome [ "as" nome ] ;
dataforge
action novo():
    yield 1
relay novo, novo as antigo

mark#

text
decorador     = "mark" "@" expressao NEWLINE ( acao | blueprint ) ;
dataforge
action dec(f):
    yield f
mark @dec
action h():
    yield 1

Estas produções saem de dataforge/gramatica.py. No terminal: dataforge gramatica modulos. Volte para a gramática.