filipinomemes 1.0.0
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.
- 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
|