Slide 12
Slide 12 text
12
DSLʹΑΔจ๏ఆ͔ٛΒAST
1.PEGͷจ๏͕DSLԽ͞Ε͍ͯΔͷ
ͰɺͦΕʹԊͬͯݴޠͷจ๏ͱϚο
νͨ࣌͠ͷૢ࡞Λॻ͍͍ͯ͘
2.طʹ࡞ͬͨநߏจʹϚον͢ΔΑ
͏จ๏Λఆٛͯ͠ɺ۩ߏจΛந
ߏจʹม͍ͯ͘͠
PEG-LikeͳDSLͰจ๏Λهड़͠ɺ۩ߏจΛநߏจʹม͍ͯ͘͠
@root true
define :additive, "multitive <'+'> additive / multitive" do
int when is_struct(int, Rorty.Ast.Expr.IntegerLiteral) -
> int
[x, y] -> Rorty.Ast.add(x, y)
end
# ʢলུʣ
define :decimal, "[0-9]+" do
digits ->
Enum.join(digits)
|> String.to_integer()
|> Rorty.Ast.integer()
end
۩ߏจΛநߏจ
ʹม͢Δ