Skip to content

Commit fa7ef42

Browse files
authored
Merge pull request #2 from jemc/master
Update for latest ponyc master (explicit partial calls).
2 parents 0fbabce + 5fe3762 commit fa7ef42

File tree

7 files changed

+38
-38
lines changed

7 files changed

+38
-38
lines changed

peg/_test.pony

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ actor Main
77
peg_compiler(env)
88
else
99
let auth = env.root as AmbientAuth
10-
let filename = env.args(1)
10+
let filename = env.args(1)?
1111
let p = recover val (JsonParser() / PegParser()).eof() end
1212
peg_run(p, filename, auth, env.out)
1313
end
@@ -18,7 +18,7 @@ actor Main
1818
Run a parser over some source file and print the AST.
1919
"""
2020
try
21-
let source = Source(FilePath(auth, filename))
21+
let source = Source(FilePath(auth, filename)?)?
2222
match recover val p.parse(source) end
2323
| (_, let r: ASTChild) =>
2424
out.print(recover val Printer(r) end)
@@ -36,10 +36,10 @@ actor Main
3636
print the AST.
3737
"""
3838
try
39-
let peg_filename = env.args(1)
40-
let target_filename = env.args(2)
39+
let peg_filename = env.args(1)?
40+
let target_filename = env.args(2)?
4141
let auth = env.root as AmbientAuth
42-
let peg = Source(FilePath(auth, peg_filename))
42+
let peg = Source(FilePath(auth, peg_filename)?)?
4343

4444
match recover val PegCompiler(peg) end
4545
| let p: Parser val =>

peg/ast.pony

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ class val AST
1515
fun size(): USize => children.size()
1616

1717
fun extract(): ASTChild =>
18-
try children(0) else NotPresent end
18+
try children(0)? else NotPresent end

peg/choice.pony

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,4 @@ class Choice is Parser
3333
end
3434
fail
3535

36-
fun error_msg(): String => try _seq(0).error_msg() else "an empty choice" end
36+
fun error_msg(): String => try _seq(0)?.error_msg() else "an empty choice" end

peg/pegcompiler.pony

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ primitive PegCompiler
4141

4242
if errors.size() == 0 then
4343
try
44-
(var start: Parser, _) = defs("start")
44+
(var start: Parser, _) = defs("start")?
4545
if defs.contains("hidden") then
46-
start = start.hide(defs("hidden")._1)
46+
start = start.hide(defs("hidden")?._1)
4747
end
4848
return start
4949
end
@@ -53,11 +53,11 @@ primitive PegCompiler
5353

5454
fun _forward_definition(errors: Array[PegError], defs: Defs, ast: AST) =>
5555
try
56-
let token = ast.children(0) as Token
56+
let token = ast.children(0)? as Token
5757
let ident: String = token.string()
5858

5959
if defs.contains(ident) then
60-
(_, let prev) = defs(ident)
60+
(_, let prev) = defs(ident)?
6161
errors.push(DuplicateDefinition(token, prev))
6262
else
6363
defs(ident) = (Forward, token)
@@ -66,12 +66,12 @@ primitive PegCompiler
6666

6767
fun _compile_definition(errors: Array[PegError], defs: Defs, ast: AST) =>
6868
try
69-
let ident: String = (ast.children(0) as Token).string()
70-
let rule = _compile_expr(errors, defs, ast.children(1))
71-
(let p, _) = defs(ident)
69+
let ident: String = (ast.children(0)? as Token).string()
70+
let rule = _compile_expr(errors, defs, ast.children(1)?)
71+
(let p, _) = defs(ident)?
7272

7373
if not p.complete() then
74-
let c = ident(0)
74+
let c = ident(0)?
7575
if (c >= 'A') and (c <= 'Z') then
7676
p() = rule.term(PegLabel(ident))
7777
else
@@ -93,42 +93,42 @@ primitive PegCompiler
9393
match node.label()
9494
| PegChoice =>
9595
let ast = node as AST
96-
var p = _compile_expr(errors, defs, ast.children(0))
96+
var p = _compile_expr(errors, defs, ast.children(0)?)
9797
for i in Range(1, ast.children.size()) do
98-
p = p / _compile_expr(errors, defs, ast.children(i))
98+
p = p / _compile_expr(errors, defs, ast.children(i)?)
9999
end
100100
p
101101
| PegSeq =>
102102
let ast = node as AST
103-
var p = _compile_expr(errors, defs, ast.children(0))
103+
var p = _compile_expr(errors, defs, ast.children(0)?)
104104
for i in Range(1, ast.children.size()) do
105-
p = p * _compile_expr(errors, defs, ast.children(i))
105+
p = p * _compile_expr(errors, defs, ast.children(i)?)
106106
end
107107
p
108108
| PegSkip =>
109-
-_compile_expr(errors, defs, (node as AST).children(0))
109+
-_compile_expr(errors, defs, (node as AST).children(0)?)
110110
| PegNot =>
111-
not _compile_expr(errors, defs, (node as AST).children(0))
111+
not _compile_expr(errors, defs, (node as AST).children(0)?)
112112
| PegAnd =>
113-
not not _compile_expr(errors, defs, (node as AST).children(0))
113+
not not _compile_expr(errors, defs, (node as AST).children(0)?)
114114
| PegMany1 =>
115-
_compile_expr(errors, defs, (node as AST).children(0)).many1()
115+
_compile_expr(errors, defs, (node as AST).children(0)?).many1()
116116
| PegMany =>
117-
_compile_expr(errors, defs, (node as AST).children(0)).many()
117+
_compile_expr(errors, defs, (node as AST).children(0)?).many()
118118
| PegSep1 =>
119119
let ast = node as AST
120-
let sep = _compile_expr(errors, defs, ast.children(1))
121-
_compile_expr(errors, defs, ast.children(0)).many1(sep)
120+
let sep = _compile_expr(errors, defs, ast.children(1)?)
121+
_compile_expr(errors, defs, ast.children(0)?).many1(sep)
122122
| PegSep =>
123123
let ast = node as AST
124-
let sep = _compile_expr(errors, defs, ast.children(1))
125-
_compile_expr(errors, defs, ast.children(0)).many(sep)
124+
let sep = _compile_expr(errors, defs, ast.children(1)?)
125+
_compile_expr(errors, defs, ast.children(0)?).many(sep)
126126
| PegOpt =>
127-
_compile_expr(errors, defs, (node as AST).children(0)).opt()
127+
_compile_expr(errors, defs, (node as AST).children(0)?).opt()
128128
| PegRange =>
129129
let ast = node as AST
130-
let a = _unescape(ast.children(0) as Token).utf32(0)._1
131-
let b = _unescape(ast.children(1) as Token).utf32(0)._1
130+
let a = _unescape(ast.children(0)? as Token).utf32(0)?._1
131+
let b = _unescape(ast.children(1)? as Token).utf32(0)?._1
132132
R(a, b)
133133
| PegIdent =>
134134
let token = node as Token
@@ -137,7 +137,7 @@ primitive PegCompiler
137137
errors.push(MissingDefinition(token))
138138
NoParser
139139
else
140-
defs(ident)._1
140+
defs(ident)?._1
141141
end
142142
| PegAny =>
143143
R(' ')

peg/position.pony

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ primitive Position
88

99
try
1010
for i in Range(0, offset) do
11-
match source.content(i)
11+
match source.content(i)?
1212
| '\r' =>
1313
line = line + 1
1414
col = 1
@@ -33,7 +33,7 @@ primitive Position
3333
let start = ((offset - col) + 1).isize()
3434
let finish =
3535
try
36-
source.content.find("\n", start)
36+
source.content.find("\n", start)?
3737
else
3838
source.content.size().isize()
3939
end
@@ -44,7 +44,7 @@ primitive Position
4444
let s = String
4545
try
4646
for i in Range(0, col - 1) do
47-
if line(i) == '\t' then
47+
if line(i)? == '\t' then
4848
s.append("\t")
4949
else
5050
s.append(" ")

peg/sequence.pony

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,4 @@ class Sequence is Parser
7979
(length, Lex)
8080

8181
fun error_msg(): String =>
82-
try _seq(0).error_msg() else "an empty sequence" end
82+
try _seq(0)?.error_msg() else "an empty sequence" end

peg/unicode.pony

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ primitive Unicode is Parser
44
=>
55
let from = skip_hidden(source, offset, hidden)
66
try
7-
(let c, let length) = source.content.utf32(from.isize())
7+
(let c, let length) = source.content.utf32(from.isize())?
88
if c != 0xFFFD then
99
return result(source, offset, from, length.usize(), tree)
1010
end
@@ -28,7 +28,7 @@ class UnicodeRange is Parser
2828
=>
2929
let from = skip_hidden(source, offset, hidden)
3030
try
31-
(let c, let length) = source.content.utf32(from.isize())
31+
(let c, let length) = source.content.utf32(from.isize())?
3232
if (c != 0xFFFD) and (c >= _low) and (c <= _hi) then
3333
return result(source, offset, from, length.usize(), tree)
3434
end

0 commit comments

Comments
 (0)