[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
progress report on nyacc
From: |
Matt Wette |
Subject: |
progress report on nyacc |
Date: |
Fri, 18 Sep 2015 16:29:39 -0700 |
My wife always says, “It’s the journey, not the destination.” Well, I started
out wanting to generate a parser for modelica and ended up writing a
parser-generator and several parsers. Now I’m working on translators. My
parser-generator is called nyacc. The example parsers I’m working are for
C99, modelica, matlab, and javascript. The parsers output the parse tree in
SXML and I’m using foldts*-values from (sxml fold) to do the translation. Here
is an illustration of the progress I’m making on javascript, from source code
to output from guile. — Matt
var x;
x = Math.sqrt(26.01);
x += 1;
x
==(parser)==>
(SourceElements
(VariableStatement
(VariableDeclarationList
(VariableDeclaration (Identifier "x"))))
(EmptyStatement)
(AssignmentExpression
(PrimaryExpression (Identifier "x"))
(assign)
(CallExpression
(obj-ref
(PrimaryExpression (Identifier "Math"))
(Identifier "sqrt"))
(ArgumentList
(PrimaryExpression (NumericLiteral "26.01")))))
(EmptyStatement)
(AssignmentExpression
(PrimaryExpression (Identifier "x"))
(add-assign)
(PrimaryExpression (NumericLiteral "1")))
(EmptyStatement)
(PrimaryExpression (Identifier "x")))
==(foldts*-values)==>
(begin
(define x (@@ (jslib) undefined))
(set! (toplevel x)
(apply (apply (@@ (jslib) lkup)
(@@ (jslib) Math)
(const "sqrt"))
(const 26.01)))
(set! (toplevel x)
(apply (@@ (jslib) JS+) (toplevel x) (const 1)))
(toplevel x))
==(compile)==>
6.1000000000000005
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- progress report on nyacc,
Matt Wette <=