Files
Nasal-Interpreter/README.md
Valk Richard Li 1bbf102985 Update README.md
2020-06-25 14:19:49 +08:00

1.5 KiB

Nasal Interpreter

nasal_new_logo

Nasal script language

Nasal is a script language that used in FlightGear.

There is a Nasal console in FlightGear but sometimes it is not so easy for every developer to use.

So this is an interpreter for Nasal written by C++.

The interpreter is still in development.Anyone who interested in this could also join us!

Lexical Analysis

What do it's outputs look like?

( identifier | start )

( operator | ; )

( reserve word | print )

( operator | ( )

( string | Engine started )

( operator | ) )

This is what it outputs.

And the flow chart of lexer is here:

nasal_lexer.png

Parser

In version 2.0

(var a,b,c)=(1,2,3);
var (r,g,b)=color;

These two types of statements are both definition_expr.

(a,b,c)=(1,2,3);
(a,b)=(b,a);

This type of statement is multi_assignment.

And to check if an expr in '(' ')' is multi_scalar or multi_id

i used bool nasal_parse::check_multi_scalar() and bool nasal_parse::check_multi_assignment()

Abstract Syntax Tree

In version 1.2 the ast has been completed.

Version 2.0

a completed ast-interpreter with unfinished lib functions.

a new byte code interpreter is in progress(version 3.0).