emfrp 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +45 -12
  3. data/bin/emfrp +4 -1
  4. data/examples/LCDClock/LCDClock.mfrp +93 -93
  5. data/examples/LCDClock/LCDClock_LPC1768.bin +0 -0
  6. data/examples/LCDClock/README.md +24 -24
  7. data/examples/LCDPositioner/LCDPositioner.mfrp +30 -30
  8. data/examples/LCDPositioner/LCDPositionerMain.c +15 -15
  9. data/examples/MostDistantPoint/MostDistantPoint.mfrp +25 -25
  10. data/examples/MostDistantPoint/MostDistantPointMain.c +14 -14
  11. data/lib/emfrp/compile/c/alloc.rb +200 -200
  12. data/lib/emfrp/compile/c/codegen.rb +18 -18
  13. data/lib/emfrp/compile/c/codegen_context.rb +218 -218
  14. data/lib/emfrp/compile/c/monofy.rb +185 -185
  15. data/lib/emfrp/compile/c/syntax_codegen.rb +364 -364
  16. data/lib/emfrp/compile/c/syntax_exp_codegen.rb +119 -119
  17. data/lib/emfrp/compile/graphviz/graphviz.rb +53 -53
  18. data/lib/emfrp/compile_error.rb +95 -95
  19. data/lib/emfrp/interpreter/command_manager.rb +367 -367
  20. data/lib/emfrp/interpreter/evaluater.rb +146 -146
  21. data/lib/emfrp/interpreter/file_loader.rb +52 -52
  22. data/lib/emfrp/interpreter/interpreter.rb +200 -195
  23. data/lib/emfrp/parser/expression.rb +386 -386
  24. data/lib/emfrp/parser/misc.rb +184 -184
  25. data/lib/emfrp/parser/newnode_convert.rb +72 -72
  26. data/lib/emfrp/parser/operator.rb +25 -25
  27. data/lib/emfrp/parser/parser.rb +150 -150
  28. data/lib/emfrp/parser/parsing_error.rb +49 -49
  29. data/lib/emfrp/parser/toplevel.rb +555 -555
  30. data/lib/emfrp/pre_convert/pre_convert.rb +32 -32
  31. data/lib/emfrp/syntax.rb +171 -171
  32. data/lib/emfrp/typing/typing_error.rb +47 -47
  33. data/lib/emfrp/typing/union_type.rb +197 -197
  34. data/lib/emfrp/version.rb +1 -1
  35. data/mfrp_include/Std.mfrp +122 -122
  36. data/tests/Rakefile +8 -8
  37. data/tests/Rakefile.common +27 -27
  38. data/tests/command/Rakefile +2 -2
  39. data/tests/command/ReplaceNode.mfrp +39 -39
  40. data/tests/compiler/ComplexDataType/ComplexDataType.mfrp +14 -14
  41. data/tests/compiler/ComplexDataType/ComplexDataTypeMain.c +15 -15
  42. data/tests/compiler/ComplexDataType/Rakefile +2 -2
  43. data/tests/compiler/ComplexDataType/expected_out.txt +0 -0
  44. data/tests/compiler/ComplexDataType/in.txt +5 -5
  45. data/tests/compiler/LCDClock/LCDClock.mfrp +90 -90
  46. data/tests/compiler/LCDClock/LCDClockMain.c +0 -0
  47. data/tests/compiler/LCDClock/Rakefile +2 -2
  48. data/tests/compiler/LCDClock/expected_out.txt +0 -0
  49. data/tests/compiler/LCDClock/in.txt +0 -0
  50. data/tests/compiler/LCDPositioner/LCDPositioner.mfrp +30 -30
  51. data/tests/compiler/LCDPositioner/LCDPositionerMain.c +15 -15
  52. data/tests/compiler/LCDPositioner/Rakefile +2 -2
  53. data/tests/compiler/LCDPositioner/graph.dot +0 -0
  54. data/tests/compiler/LCDPositioner/graph.png +0 -0
  55. data/tests/compiler/Rakefile +8 -8
  56. data/tests/compiler/Rakefile.common +23 -23
  57. data/tests/compiler/UseData/Rakefile +2 -2
  58. data/tests/compiler/UseData/UseData.mfrp +8 -8
  59. data/tests/compiler/UseSubModule/Rakefile +2 -2
  60. data/tests/compiler/UseSubModule/SubModule.mfrp +8 -8
  61. data/tests/compiler/UseSubModule/SubModule2.mfrp +5 -5
  62. data/tests/compiler/UseSubModule/UseSubModule.mfrp +11 -11
  63. data/tests/core/FromAnnotation.mfrp +18 -18
  64. data/tests/core/Last.mfrp +10 -10
  65. data/tests/core/Rakefile +2 -2
  66. data/tests/core/TypingTest.mfrp +11 -11
  67. data/tests/core/WithoutInputs.mfrp +19 -19
  68. data/tests/load_time_error/Rakefile +32 -32
  69. data/tests/load_time_error/TypeMismatch.mfrp +4 -4
  70. metadata +3 -3
@@ -1,18 +1,18 @@
1
- module FromAnnotation
2
- in
3
- i : Int
4
- out
5
- n1 : Int,
6
- n2 : Int
7
- use Std
8
-
9
- node init[0] from[i, n1@last]
10
- n1 = n1@last + i
11
-
12
- node init[0]
13
- n2 = n2@last + i
14
-
15
- #@ :assert-module 0 => 0, 0
16
- #@ : 1 => 1, 1
17
- #@ : 1 => 2, 2
18
- #@ : 2 => 4, 4
1
+ module FromAnnotation
2
+ in
3
+ i : Int
4
+ out
5
+ n1 : Int,
6
+ n2 : Int
7
+ use Std
8
+
9
+ node init[0] from[i, n1@last]
10
+ n1 = n1@last + i
11
+
12
+ node init[0]
13
+ n2 = n2@last + i
14
+
15
+ #@ :assert-module 0 => 0, 0
16
+ #@ : 1 => 1, 1
17
+ #@ : 1 => 2, 2
18
+ #@ : 2 => 4, 4
data/tests/core/Last.mfrp CHANGED
@@ -1,10 +1,10 @@
1
- module Last in x:Int out y use Std
2
-
3
- node init[0] a = x
4
- node y = a@last
5
-
6
- #@ :assert-module
7
- #- 1 => 0
8
- #@ : 2 => 1
9
- #@ : 3 => 2
10
- #@ : 4 => 3
1
+ module Last in x:Int out y use Std
2
+
3
+ node init[0] a = x
4
+ node y = a@last
5
+
6
+ #@ :assert-module
7
+ #- 1 => 0
8
+ #@ : 2 => 1
9
+ #@ : 3 => 2
10
+ #@ : 4 => 3
data/tests/core/Rakefile CHANGED
@@ -1,2 +1,2 @@
1
- load File.expand_path('../../Rakefile.common', __FILE__)
2
- task :default => ["Std"] + TARGETS
1
+ load File.expand_path('../../Rakefile.common', __FILE__)
2
+ task :default => ["Std"] + TARGETS
@@ -1,11 +1,11 @@
1
- material TypingTest use Std
2
-
3
- #@ :assert-type x => Tuple2[Int, Unit]
4
- data x = ((1, 2), Unit) of ((a, b), c) -> (a, c)
5
-
6
- #@ :assert-type y => Maybe[Int]
7
- data y : Maybe[Int] = Nothing
8
-
9
- #@ :assert-type z => Tuple2[Int, Double]
10
- func id(x) = x
11
- data z = (id(1), id(1.0))
1
+ material TypingTest use Std
2
+
3
+ #@ :assert-type x => Tuple2[Int, Unit]
4
+ data x = ((1, 2), Unit) of ((a, b), c) -> (a, c)
5
+
6
+ #@ :assert-type y => Maybe[Int]
7
+ data y : Maybe[Int] = Nothing
8
+
9
+ #@ :assert-type z => Tuple2[Int, Double]
10
+ func id(x) = x
11
+ data z = (id(1), id(1.0))
@@ -1,19 +1,19 @@
1
- # testing no-inputs module
2
- module WithoutInputs
3
- out
4
- x : Int
5
- use Std
6
-
7
- #@ :assert-node x 0 => 1
8
- #@ :assert-node x 1 => 2
9
- node init[0] x = x@last + 1
10
-
11
- # testing no-dependings node
12
- #@ :assert-node const0 => 0
13
- node const0 = 0
14
-
15
- #@ :assert-module
16
- #- => 1
17
- #@ : => 2
18
- #@ : => 3
19
- #@ : => 4
1
+ # testing no-inputs module
2
+ module WithoutInputs
3
+ out
4
+ x : Int
5
+ use Std
6
+
7
+ #@ :assert-node x 0 => 1
8
+ #@ :assert-node x 1 => 2
9
+ node init[0] x = x@last + 1
10
+
11
+ # testing no-dependings node
12
+ #@ :assert-node const0 => 0
13
+ node const0 = 0
14
+
15
+ #@ :assert-module
16
+ #- => 1
17
+ #@ : => 2
18
+ #@ : => 3
19
+ #@ : => 4
@@ -1,32 +1,32 @@
1
- $LOAD_PATH.unshift File.expand_path('../../../lib', __FILE__)
2
- require 'emfrp'
3
- require 'stringio'
4
-
5
- TARGETS = Dir.glob("./*.mfrp").map{|x| x =~ /^\.\/(.*).mfrp$/; $1}
6
-
7
- task :default => TARGETS
8
-
9
- TARGETS.each do |t|
10
- file t do
11
- puts "TESTING #{t}".colorize(:light_blue)
12
- expected_code = File.open("#{t}.mfrp", 'r'){|f| f.gets[1..-1].chomp.strip.to_sym}
13
- begin
14
- out = StringIO.new
15
- inter = Emfrp::Interpreter.new(Emfrp::IncludeDirs, out, t)
16
- puts " => fail".colorize(:red)
17
- rescue Emfrp::Interpreter::InterpreterError => err
18
- if err.code == expected_code
19
- puts " => ok".colorize(:green)
20
- else
21
- puts "Error code `#{expected_code}' is expected, but actual is `#{err.code}'."
22
- out.string.each_line do |line|
23
- print ">> " + line
24
- end
25
- puts " => fail".colorize(:red)
26
- end
27
- rescue => err
28
- puts err.inspect
29
- puts " => fail".colorize(:red)
30
- end
31
- end
32
- end
1
+ $LOAD_PATH.unshift File.expand_path('../../../lib', __FILE__)
2
+ require 'emfrp'
3
+ require 'stringio'
4
+
5
+ TARGETS = Dir.glob("./*.mfrp").map{|x| x =~ /^\.\/(.*).mfrp$/; $1}
6
+
7
+ task :default => TARGETS
8
+
9
+ TARGETS.each do |t|
10
+ file t do
11
+ puts "TESTING #{t}".colorize(:light_blue)
12
+ expected_code = File.open("#{t}.mfrp", 'r'){|f| f.gets[1..-1].chomp.strip.to_sym}
13
+ begin
14
+ out = StringIO.new
15
+ inter = Emfrp::Interpreter.new(Emfrp::IncludeDirs, out, t)
16
+ puts " => fail".colorize(:red)
17
+ rescue Emfrp::Interpreter::InterpreterError => err
18
+ if err.code == expected_code
19
+ puts " => ok".colorize(:green)
20
+ else
21
+ puts "Error code `#{expected_code}' is expected, but actual is `#{err.code}'."
22
+ out.string.each_line do |line|
23
+ print ">> " + line
24
+ end
25
+ puts " => fail".colorize(:red)
26
+ end
27
+ rescue => err
28
+ puts err.inspect
29
+ puts " => fail".colorize(:red)
30
+ end
31
+ end
32
+ end
@@ -1,4 +1,4 @@
1
- # unify
2
- material TypeMismatch use Std
3
-
4
- data x = 1 + 1.1
1
+ # unify
2
+ material TypeMismatch use Std
3
+
4
+ data x = 1 + 1.1
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emfrp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kensuke Sawada
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-19 00:00:00.000000000 Z
11
+ date: 2018-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -204,7 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
204
204
  version: '0'
205
205
  requirements: []
206
206
  rubyforge_project:
207
- rubygems_version: 2.2.2
207
+ rubygems_version: 2.6.11
208
208
  signing_key:
209
209
  specification_version: 4
210
210
  summary: A compier of Emfrp, a FRP language for small embeded systems.