filipinomemes 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +602 -0
- data/Rakefile +6 -0
- data/_config.yml +1 -0
- data/bin/filipinomemes +21 -0
- data/filipinomemes.gemspec +26 -0
- data/lib/filipinomemes.rb +3 -0
- data/lib/filipinomemes/compiler.rb +21 -0
- data/lib/filipinomemes/core_ext.rb +8 -0
- data/lib/filipinomemes/core_ext/array.rb +19 -0
- data/lib/filipinomemes/core_ext/class.rb +4 -0
- data/lib/filipinomemes/core_ext/enumerator.rb +3 -0
- data/lib/filipinomemes/core_ext/integer.rb +4 -0
- data/lib/filipinomemes/core_ext/kernel.rb +13 -0
- data/lib/filipinomemes/core_ext/module.rb +4 -0
- data/lib/filipinomemes/core_ext/range.rb +6 -0
- data/lib/filipinomemes/core_ext/string.rb +13 -0
- data/lib/filipinomemes/ruby_parser_patches.rb +156 -0
- data/lib/filipinomemes/version.rb +3 -0
- data/sample_programs/agapan.bt +5 -0
- data/sample_programs/alyas.bt +9 -0
- data/sample_programs/batotris.bt +286 -0
- data/sample_programs/bilang.bt +10 -0
- data/sample_programs/dapat.bt +9 -0
- data/sample_programs/habang.bt +7 -0
- data/sample_programs/ihinto.bt +8 -0
- data/sample_programs/kontrol-sa-pagiikot.bt +45 -0
- data/sample_programs/kumusta_mundo.bt +5 -0
- data/sample_programs/magbibigay.bt +27 -0
- data/sample_programs/maliban_na.bt +12 -0
- data/sample_programs/modyul.bt +20 -0
- data/sample_programs/nakatukoy.bt +13 -0
- data/sample_programs/ngunit_kapag.bt +8 -0
- data/sample_programs/o_ang.bt +3 -0
- data/sample_programs/pamamaraan-sa-pagkakamali.bt +11 -0
- data/sample_programs/pangalan.bt +10 -0
- data/sample_programs/panguri.bt +13 -0
- data/sample_programs/panuntunan.bt +23 -0
- data/sample_programs/para_sa.bt +4 -0
- data/sample_programs/pibonasyi.bt +59 -0
- data/sample_programs/siguraduhin.bt +8 -0
- data/sample_programs/tanggalin.bt +23 -0
- data/sample_programs/timebomb.bt +36 -0
- data/spec/filipinomemes/compiler_spec.rb +116 -0
- data/spec/spec_helper.rb +61 -0
- metadata +152 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
# isaisahin loop
|
2
|
+
['a','b','c','d'].isaisahin adbans |titik|
|
3
|
+
mag_print "Ang titik ay #{titik}"
|
4
|
+
finish_na
|
5
|
+
|
6
|
+
# isaisahin loop on range
|
7
|
+
(1..10).isaisahin adbans |numero|
|
8
|
+
mag_print "Ang numero ay #{numero}"
|
9
|
+
finish_na
|
10
|
+
|
11
|
+
# while loop
|
12
|
+
numero = 1
|
13
|
+
ako_magisip numero < 10 adbans
|
14
|
+
mag_print "Ang numero ay #{numero} na"
|
15
|
+
numero += 1
|
16
|
+
finish_na
|
17
|
+
|
18
|
+
# begin while
|
19
|
+
numero = 0
|
20
|
+
panghuling_numero = 5
|
21
|
+
glhf
|
22
|
+
mag_print "Ang numero ay #{numero} na"
|
23
|
+
numero += 1
|
24
|
+
finish_na ako_magisip numero < panghuling_numero
|
25
|
+
|
26
|
+
# until
|
27
|
+
numero = 0
|
28
|
+
panghuling_numero = 5
|
29
|
+
hanggang numero > panghuling_numero adbans
|
30
|
+
mag_print "Ang numero ay #{numero} na"
|
31
|
+
numero += 1
|
32
|
+
finish_na
|
33
|
+
|
34
|
+
# begin until
|
35
|
+
numero = 0
|
36
|
+
panghuling_numero = 5
|
37
|
+
glhf
|
38
|
+
mag_print "Ang numero ay #{numero} na"
|
39
|
+
numero += 1
|
40
|
+
finish_na hanggang numero < panghuling_numero
|
41
|
+
|
42
|
+
# for loop
|
43
|
+
para_ang numero na_nasa 0..5
|
44
|
+
mag_print "Ang numero ay #{numero} na"
|
45
|
+
finish_na
|
@@ -0,0 +1,27 @@
|
|
1
|
+
ang gumawaNgID
|
2
|
+
mag_print "------------------------------------------"
|
3
|
+
|
4
|
+
magbigay_daan
|
5
|
+
|
6
|
+
mag_print "------------------------------------------"
|
7
|
+
finish_na
|
8
|
+
|
9
|
+
ang ID(impormasyon = {})
|
10
|
+
gumawaNgID adbans
|
11
|
+
mag_print <<-FINISH_NA
|
12
|
+
Pangalan: #{impormasyon[:pangalan]}
|
13
|
+
Edad: #{impormasyon[:edad]}
|
14
|
+
Tirahan: #{impormasyon[:tirahan]}
|
15
|
+
Baitang: #{impormasyon[:baitang]}
|
16
|
+
Seksiyon: #{impormasyon[:seksiyon]}
|
17
|
+
FINISH_NA
|
18
|
+
finish_na
|
19
|
+
finish_na
|
20
|
+
|
21
|
+
ID({
|
22
|
+
pangalan: "Maliksi Batubalani",
|
23
|
+
edad: "13",
|
24
|
+
tirahan: "Ilocos",
|
25
|
+
baitang: "6",
|
26
|
+
seksiyon: "Masisipag"
|
27
|
+
})
|
@@ -0,0 +1,12 @@
|
|
1
|
+
mga_persona = [
|
2
|
+
{ pangalan: 'Gener', kasarian: 'lalaki' },
|
3
|
+
{ pangalan: 'Karmen', kasarian: 'babae' }
|
4
|
+
]
|
5
|
+
|
6
|
+
mga_persona.isaisahin adbans |tao|
|
7
|
+
malibang tao[:kasarian] == 'lalaki'
|
8
|
+
mag_print "si #{tao[:pangalan]} ay babae!"
|
9
|
+
ginagawa_mue
|
10
|
+
mag_print "si #{tao[:pangalan]} ay lalaki!"
|
11
|
+
finish_na
|
12
|
+
finish_na
|
@@ -0,0 +1,20 @@
|
|
1
|
+
grupo MgaAlagangHayop
|
2
|
+
KAILANGAN_DAMI_NG_ASO = 5
|
3
|
+
bilang Aso
|
4
|
+
ang tahol
|
5
|
+
mag_print "Woof..."
|
6
|
+
finish_na
|
7
|
+
|
8
|
+
ang kumanin
|
9
|
+
mag_print "..."
|
10
|
+
finish_na
|
11
|
+
|
12
|
+
ang ikembot_ang_buntot
|
13
|
+
mag_print "Ginagawa ko ito dahil masaya ako!"
|
14
|
+
finish_na
|
15
|
+
finish_na
|
16
|
+
finish_na
|
17
|
+
|
18
|
+
dami = 6
|
19
|
+
browny = MgaAlagangHayop::Aso.gumawa
|
20
|
+
browny.ikembot_ang_buntot ip dami >= MgaAlagangHayop::KAILANGAN_DAMI_NG_ASO
|
@@ -0,0 +1,13 @@
|
|
1
|
+
grupo Manggagawa
|
2
|
+
bilang Magsasaka
|
3
|
+
ang pananim
|
4
|
+
['sibuyas', 'kamatis', 'sili', 'palay', 'mais'].isaisahin adbans |pananim|
|
5
|
+
mag_print "Mag tatanim ng #{pananim} ngayong panahon"
|
6
|
+
finish_na
|
7
|
+
finish_na
|
8
|
+
finish_na
|
9
|
+
finish_na
|
10
|
+
|
11
|
+
kung nakatukoy?(Manggagawa::Magsasaka)
|
12
|
+
mag_print 'May nakatukoy!'
|
13
|
+
finish_na
|
@@ -0,0 +1,10 @@
|
|
1
|
+
ang iprintAngPangalan(pangalan = wala)
|
2
|
+
ip pangalan != wala
|
3
|
+
mag_print "Magandang araw sa iyo #{pangalan}!"
|
4
|
+
ginagawa_mue
|
5
|
+
mag_print "Magandang araw!"
|
6
|
+
finish_na
|
7
|
+
finish_na
|
8
|
+
|
9
|
+
iprintAngPangalan "Maria" # => "Magandang araw sa iyo Maria!"
|
10
|
+
iprintAngPangalan # => "Magandang araw!"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
ang gumawaNgID(estudyante = {})
|
2
|
+
pangalan = estudyante[:pangalan]
|
3
|
+
edad = estudyante[:edad]
|
4
|
+
tirahan = estudyante[:tirahan]
|
5
|
+
baitang = estudyante[:baitang]
|
6
|
+
seksiyon = estudyante[:seksiyon]
|
7
|
+
|
8
|
+
mag_print <<-FINISH_NA
|
9
|
+
Pangalan: #{pangalan}
|
10
|
+
Edad: #{edad}
|
11
|
+
Tirahan: #{tirahan}
|
12
|
+
Baitang: #{baitang}
|
13
|
+
Seksiyon: #{seksiyon}
|
14
|
+
FINISH_NA
|
15
|
+
finish_na
|
16
|
+
|
17
|
+
gumawaNgID({
|
18
|
+
pangalan: "Maliksi Batubalani",
|
19
|
+
edad: "13",
|
20
|
+
tirahan: "Ilocos",
|
21
|
+
baitang: "6",
|
22
|
+
seksiyon: "Masisipag"
|
23
|
+
})
|
@@ -0,0 +1,59 @@
|
|
1
|
+
ang pibonasyi(n, n1 = 1, n2 = 1)
|
2
|
+
ip n <= 2
|
3
|
+
[0, n1, n2][n]
|
4
|
+
ginagawa_mue
|
5
|
+
sagot = wala
|
6
|
+
(n-2).ulit adbans
|
7
|
+
sagot = n1 + n2
|
8
|
+
n1 = n2
|
9
|
+
n2 = sagot
|
10
|
+
finish_na
|
11
|
+
sagot
|
12
|
+
finish_na
|
13
|
+
finish_na
|
14
|
+
|
15
|
+
ang pibonasyingPagsuksok(n, n1 = 1, n2 = 1)
|
16
|
+
ip n <= 2
|
17
|
+
[0, n1, n2][n]
|
18
|
+
ginagawa_mue
|
19
|
+
([wala].umikot.kumuha(n-2).ipasok([n1, n2]) adbans |nakaraan, x|
|
20
|
+
nakaraan.magbagsak(1).itulak(nakaraan[0] + nakaraan[1])
|
21
|
+
finish_na).huli
|
22
|
+
finish_na
|
23
|
+
finish_na
|
24
|
+
|
25
|
+
ang pibonasyingInuulit(n, n1 = 1, n2 = 1)
|
26
|
+
ip n <= 2
|
27
|
+
binhi = [0, n1, n2]
|
28
|
+
binhi[n]
|
29
|
+
ginagawa_mue
|
30
|
+
pibonasyingInuulit(n-1, n1, n2) + pibonasyingInuulit(n-2, n1, n2)
|
31
|
+
finish_na
|
32
|
+
finish_na
|
33
|
+
|
34
|
+
ang pibonasyingBuntutangInuulit(n, n1 = 1, n2 = 1)
|
35
|
+
magbalik n1 ip n <= 1
|
36
|
+
magbalik n2 ip n == 2
|
37
|
+
magbalik pibonasyi(n - 1, n2, n1 + n2)
|
38
|
+
finish_na
|
39
|
+
|
40
|
+
ang pibonasyingPaguulit(n, n1 = 1, n2 = 1)
|
41
|
+
(2..n).sa_bawat_isa {
|
42
|
+
n1, n2 = n2, n1 + n2
|
43
|
+
}
|
44
|
+
magbalik n1
|
45
|
+
finish_na
|
46
|
+
|
47
|
+
ang pibonasyingPaguulitNaUmiikot(n, n1 = 1, n2 = 1)
|
48
|
+
para_sa i sa 2..n
|
49
|
+
n1, n2 = n2, n1 + n2
|
50
|
+
finish_na
|
51
|
+
magbalik n1
|
52
|
+
finish_na
|
53
|
+
|
54
|
+
mag_print "Gamit ang Panuntunang Pibonasyi sa 10 ay #{pibonasyi 10}"
|
55
|
+
mag_print "Gamit ang Panuntunang Pibonasying May Pagsuksok sa 9 ay #{pibonasyingPagsuksok 9}"
|
56
|
+
mag_print "Gamit ang Panuntunang Pibonasying Inuulit sa 8 ay #{pibonasyingInuulit 8}"
|
57
|
+
mag_print "Gamit ang Panuntunang Pibonasying May Buntot na Inuulit sa 7 ay #{pibonasyingBuntutangInuulit 7}"
|
58
|
+
mag_print "Gamit ang Panuntunang Pibonasying Paguulit sa 6 ay #{pibonasyingPaguulit 6}"
|
59
|
+
mag_print "Gamit ang Panuntunang Pibonasying Paguulit na Umiikot sa 5 ay #{pibonasyingPaguulitNaUmiikot 5}"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
grupo Hayop
|
2
|
+
bilang Aso
|
3
|
+
ang tahol
|
4
|
+
mag_print 'baw waw!'
|
5
|
+
finish_na
|
6
|
+
finish_na
|
7
|
+
finish_na
|
8
|
+
|
9
|
+
bilang Pusa < Hayop::Aso
|
10
|
+
tanggalin tahol
|
11
|
+
|
12
|
+
ang meow
|
13
|
+
mag_print 'meow wahu!'
|
14
|
+
finish_na
|
15
|
+
finish_na
|
16
|
+
|
17
|
+
pusa = Pusa.kumatawan
|
18
|
+
|
19
|
+
wala_na
|
20
|
+
pusa.tahol
|
21
|
+
agapan => pagkakamali
|
22
|
+
mag_print "ang pagkakamali ay '#{pagkakamali}'"
|
23
|
+
finish_na
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Filipinomemes Programming Language (https://github.com/zephyrum14/filipinomemes)
|
2
|
+
|
3
|
+
grupo TimeBomb
|
4
|
+
BILANG = 5
|
5
|
+
bilang Bomba
|
6
|
+
ang tik
|
7
|
+
mag_print 'tik'
|
8
|
+
finish_na
|
9
|
+
|
10
|
+
ang tok
|
11
|
+
mag_print 'tok'
|
12
|
+
finish_na
|
13
|
+
|
14
|
+
ang sabog
|
15
|
+
mag_print 'kaboom!'
|
16
|
+
finish_na
|
17
|
+
finish_na
|
18
|
+
finish_na
|
19
|
+
|
20
|
+
pasabog = TimeBomb::Bomba.gumawa
|
21
|
+
|
22
|
+
numero = 1
|
23
|
+
ako_magisip numero <= TimeBomb::BILANG adbans
|
24
|
+
mag_print "#{numero}"
|
25
|
+
|
26
|
+
ip (numero == TimeBomb::BILANG)
|
27
|
+
pasabog.sabog
|
28
|
+
agik_ginagawa_mue (numero % 2) != 0
|
29
|
+
pasabog.tik
|
30
|
+
agik_ginagawa_mue (numero % 2) == 0
|
31
|
+
pasabog.tok
|
32
|
+
finish_na
|
33
|
+
|
34
|
+
matulog 1
|
35
|
+
numero += 1
|
36
|
+
finish_na
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
isalaysay_ang 'Compiler' do
|
4
|
+
italaga_ang(:starting_code) do
|
5
|
+
"# encoding: utf-8\nrequire \"filipinomemes/core_ext\"\n"
|
6
|
+
end
|
7
|
+
|
8
|
+
italaga_ang(:compiler) do
|
9
|
+
Filipinomemes::Compiler.new
|
10
|
+
end
|
11
|
+
|
12
|
+
ito_ang 'Filipinomemes is empty' do
|
13
|
+
compiler.zephyrum('').should == starting_code + ''
|
14
|
+
end
|
15
|
+
|
16
|
+
isalaysay_ang 'bilang' do
|
17
|
+
ito_ang 'pambuong bilang' do
|
18
|
+
compiler.zephyrum('1').should == starting_code + '1'
|
19
|
+
end
|
20
|
+
|
21
|
+
ito_ang 'maliliit na bilang' do
|
22
|
+
compiler.zephyrum('1.2').should == starting_code + '1.2'
|
23
|
+
end
|
24
|
+
|
25
|
+
ito_ang 'listahan ng mga bilang' do
|
26
|
+
compiler.zephyrum('[1.2, 3]').should == starting_code + '[1.2, 3]'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
isalaysay_ang 'ekspresyong Boolean' do
|
31
|
+
ito_ang 'ekspresyon ng truts o true' do
|
32
|
+
compiler.zephyrum('truts').should == starting_code + 'true'
|
33
|
+
end
|
34
|
+
|
35
|
+
ito_ang 'ekspresyon ng mali o false' do
|
36
|
+
compiler.zephyrum('mali').should == starting_code + 'false'
|
37
|
+
end
|
38
|
+
|
39
|
+
ito_ang 'ekspresyon ng hindi o not' do
|
40
|
+
compiler.zephyrum('hindi truts').should == starting_code + '(not true)'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
isalaysay_ang 'susing mga salita' do
|
45
|
+
ito_ang 'ekspresyon ng agik / dapat / agik_ginagawa_mue / ginagawa_mue / finish_na' do
|
46
|
+
compiler.zephyrum('
|
47
|
+
agik 1 dapat
|
48
|
+
2
|
49
|
+
agik_ginagawa_mue 3
|
50
|
+
4
|
51
|
+
ginagawa_mue
|
52
|
+
5
|
53
|
+
finish_na').should be_like(starting_code +
|
54
|
+
'1 ? (2) : (3 ? (4) : (5))')
|
55
|
+
end
|
56
|
+
|
57
|
+
ito_ang 'ekspresyon ng hakdog / pagka / dapat / ginagawa_mue / finish_na' do
|
58
|
+
compiler.zephyrum("
|
59
|
+
hakdog 1
|
60
|
+
pagka 1 dapat 1
|
61
|
+
pagka 2
|
62
|
+
2
|
63
|
+
ginagawa_mue
|
64
|
+
3
|
65
|
+
finish_na").should be_like(starting_code +
|
66
|
+
'case 1
|
67
|
+
when 1 then
|
68
|
+
1
|
69
|
+
when 2 then
|
70
|
+
2
|
71
|
+
else
|
72
|
+
3
|
73
|
+
end')
|
74
|
+
end
|
75
|
+
|
76
|
+
ito_ang 'glhf / iligtas / iangat / siguraduhing / finish_na' do
|
77
|
+
# raise ir Kernel metode nevis atslēgvārds
|
78
|
+
compiler.zephyrum('
|
79
|
+
glhf
|
80
|
+
1 / 0
|
81
|
+
iligtas => pagkakamali
|
82
|
+
neba_gibap
|
83
|
+
iangat pagkakamali, pagkakamali.iulat
|
84
|
+
siguraduhing
|
85
|
+
mag_print "Katapusan"
|
86
|
+
finish_na').should be_like(starting_code +
|
87
|
+
'begin
|
88
|
+
(1 / 0)
|
89
|
+
rescue => pagkakamali
|
90
|
+
retry
|
91
|
+
iangat(pagkakamali, pagkakamali.iulat)
|
92
|
+
ensure
|
93
|
+
mag_print("Katapusan")
|
94
|
+
end')
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
isalaysay_ang 'pamamaraan sa Kernel' do
|
99
|
+
ito_ang "ekspresyon ng pagsusulat gamit ang 'mag_print'" do
|
100
|
+
compiler.zephyrum("mag_print 'abc'").should ==
|
101
|
+
starting_code + 'mag_print("abc")'
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
isalaysay_ang 'Dinikit na mga pamamaraan' do
|
106
|
+
ito_ang 'ekspresyon ng pamamaraan sa pagbabaliktad ng mga titik' do
|
107
|
+
resulta = eval compiler.zephyrum("'magandang araw'.baliktad")
|
108
|
+
resulta.should == 'wara gnadnagam'
|
109
|
+
end
|
110
|
+
|
111
|
+
ito_ang 'ekspresayon ng pamamaraan sa pagsukat ng haba ng salita' do
|
112
|
+
resulta = eval compiler.zephyrum("'Pangungusap'.haba")
|
113
|
+
resulta.should == 11
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|