-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcompiler.m4
More file actions
111 lines (111 loc) · 2.25 KB
/
compiler.m4
File metadata and controls
111 lines (111 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
changecom()dnl
changequote([[, ]])dnl
dnl
dnl
dnl
dnl
dnl
define([[VAR_LANGUAGE]], ARG_LANGUAGE)dnl
dnl
dnl
define([[_indent]],
ifelse(
VAR_LANGUAGE, [[javascript]], [[ ]],
VAR_LANGUAGE, [[python]], [[ ]],
VAR_LANGUAGE, [[ruby]], [[ ]],
VAR_LANGUAGE, [[java]], [[ ]],
))dnl
dnl
dnl
define([[[[str]]]],
ifelse(
VAR_LANGUAGE, [[javascript]], [[[[string]]]],
VAR_LANGUAGE, [[python]], [[[[str]]]],
VAR_LANGUAGE, [[ruby]], [[[[string]]]],
VAR_LANGUAGE, [[java]], [[[[String]]]],
))dnl
dnl
dnl
define([[[[int]]]],
ifelse(
VAR_LANGUAGE, [[javascript]], [[[[number]]]],
VAR_LANGUAGE, [[python]], [[[[int]]]],
VAR_LANGUAGE, [[ruby]], [[[[int]]]],
VAR_LANGUAGE, [[java]], [[[[int]]]],
))dnl
dnl
dnl
define([[_shebang]],
ifelse(
VAR_LANGUAGE, [[javascript]], [[#!/usr/bin/env node]],
VAR_LANGUAGE, [[python]], [[#!/usr/bin/env python3]],
VAR_LANGUAGE, [[ruby]], [[#!/usr/bin/env ruby]],
VAR_LANGUAGE, [[java]], [[#!/usr/bin/env -S java --source 11]],
))dnl
dnl
dnl
define([[_main]],
ifelse(
VAR_LANGUAGE, [[java]], [[dnl
class Program {
$1
}]],
[[$1]]
))dnl
dnl
dnl
define([[_comment_line]],
ifelse(
VAR_LANGUAGE, [[javascript]], [[// $1]],
VAR_LANGUAGE, [[python]], [[# $1]],
VAR_LANGUAGE, [[ruby]], [[# $1]],
VAR_LANGUAGE, [[java]], [[// $1]],
))dnl
dnl
dnl
dnl -- DEFINE VARIABLE
define([[_var]],
ifelse(
VAR_LANGUAGE, [[javascript]], [[let $1 = $2]],
VAR_LANGUAGE, [[python]], [[$1 = $2]],
VAR_LANGUAGE, [[ruby]], [[$1 = $2]],
VAR_LANGUAGE, [[java]], [[var $1 = $2]],
))dnl
dnl
dnl
dnl -- DEFINE FUNCTION
define([[_function]],
ifelse(
VAR_LANGUAGE, [[javascript]], [[dnl
/** @returns {$3} */
function $1($2) {
$4
}]],
VAR_LANGUAGE, [[python]], [[dnl
def $1($2) -> $3:
$4]],
VAR_LANGUAGE, [[ruby]], [[dnl
def $1($2)
$4
end]],
VAR_LANGUAGE, [[java]], [[dnl
$3 $1($2) {
$4
}]]
))dnl
dnl
dnl
define([[_call]], [[$1($2)]])dnl
define([[_return]], [[return $1]])dnl
dnl
dnl
define([[fn_print_stdout]],
ifelse(
VAR_LANGUAGE, [[javascript]], [[console.log($1)]],
VAR_LANGUAGE, [[python]], [[print($1)]],
VAR_LANGUAGE, [[ruby]], [[puts($1)]],
VAR_LANGUAGE, [[java]], [[System.out.println($1)]],
))dnl
dnl
dnl
changecom(#)dnl