Upgrade to Pro — share decks privately, control downloads, hide ads and more …

言語書いてみた話 #学生LT

coord.e
December 09, 2017

言語書いてみた話 #学生LT

C++で言語を書いてみた話です。12/9の学生LTでLTしました

coord.e

December 09, 2017
Tweet

More Decks by coord.e

Other Decks in Programming

Transcript

  1. ࢲ͸… About me ▪ $ FS ▪ \'SPOU #BDL^FOE+4΋ͨ·ʹ ▪

    ϚΠίϯɾిࢠ޻࡞
 \1*$ "SEVJOP &EJTPO^ ▪ !DPPSE@F
 DPPSEF ▪ ϩϘοτͭ͘Γ·ͤΜ͔ 
 XXXZNPEJGZPSH
 !ZNPEJGZ
 :NPEJGZ ŢŖŲƅŽŲƅŽŕš-
  2. scopionͳΒ… (1/2) ▪ ܕΛॻ͘ͷ͕ΊΜͲ͍͘͞
 ˠ ܕਪ࿦ ▪ ม਺໊Λߟ͑Δͷ͕ͩΔ͍
 ˠ ༧໿ޠͷഉআ

    ▪ ؔ਺ͷ෭࡞༻Λҙࣝ͢Δͷ͕ͩΔ͍
 ˠ ͦΜͳ΋ͷ͸ͳ͍ (ࢀরಁա) Features (1/2)
  3. 1 (argc, argv){ 2 /* CϔομͷಡΈࠐΈ */ 3 io =

    @import#c:stdio.h; 4 lib = @import#c:stdlib.h; 5 math = @import#c:math.h; 6 7 argc > 2 ? { // ৚݅෼ذ 8 base = lib.atof(argv[1]); 9 exp = lib.atof(argv[2]); 10 io.printf("%f^%f = %f\n", base, exp, math.pow(base, exp)); 11 |> 0; // return 12 } : { 13 io.printf("Invaild argument!\n"); 14 |> -1; 15 }; 16 }
  4. ❯ scopc pow.scc –o pow ❯ ./pow 3 2 3.000000^2.000000

    = 9.000000 ❯ ./pow 2 10 2.000000^10.000000 = 1024.000000
  5. Construction ߏ੒ ύʔα τϥϯεϨʔλ *3ίϯύΠϥ จ๏ʹैͬͯ۠੾Γ
 σʔλߏ଄ "45 ʹ
 ม׵͢Δ

    "45͔ΒҙຯΛղੳ͠
 ͦΕʹԠͯ͡ɺதؒݴ ޠ --7.*3 ʹ຋༁͢Δ தؒݴޠ --7.*3 ͔Βػցޠʹ຋༁ ͢Δ ΑΓίϯϐϡʔλʔʹΘ͔Γ΍͍͢දݱ΁຋༁͍ͯ͘͠ ιʔείʔυ ࣮ߦՄೳ
 ϑΝΠϧ scopc compiler ࢲ੍͕࡞ͨ͠෦෼ By LLVM ›_
  6. Boost.Spirit.X3 &#/'Λιʔεʹॻ͍͍ͯΔ৺஍ ͍͢͝ύʔα auto const mul_expr_def = pow_expr[detail::assign] >> *(("*"

    > pow_expr)[detail::assign_op<ast::mul, 2>] | ("/" > pow_expr)[detail::assign_op<ast::div, 2>]); auto const add_expr_def = mul_expr[detail::assign] >> *(("+" > mul_expr)[detail::assign_op<ast::add, 2>] | ("-" > mul_expr)[detail::assign_op<ast::sub, 2>] | ("%" > mul_expr)[detail::assign_op<ast::rem, 2>]);