Lexical format for floating-point constants

50 views
Skip to first unread message

Artyom Shalkhakov

unread,
Jun 27, 2016, 4:06:42 AM6/27/16
to ats-lang-users
I'm doing a syntax highlighter for ATS based on the Monarch editor (used in Visual Studio Code) and I'm interested to know what's the lexical grammar for floating-point constants?

I've tried looking through the lexer source code, but I find it quite complicated. I'd like some help on this one.

gmhwxi

unread,
Jun 27, 2016, 11:20:16 AM6/27/16
to ats-lang-users

Let

INT0 = [0-9]*
INT1 = (0 | [1-9](INT0))
DOT = [.]
EXP = [eE](INT1)

Then FLOAT is

(INT1)(EXP) | (INT1)(DOT)(INT0)(EXP)? | (DOT)(INT1)(EXP)?

There are also hexadecimal floating point numbers:

HEX0 = [0-9a-z]*
HEX1 = (0 | [1-9a-z](HEX0))
DOT = [.]
EXP = [pP](INT1)

HEXFLOAT = (HEX1)(EXP) | (HEX1)(DOT)(HEX0)(EXP?) | (DOT)(HEX1)(EXP?)

In C, EXP? should be EXP for hexadecimal floating point numbers.

gmhwxi

unread,
Jun 27, 2016, 11:22:37 AM6/27/16
to ats-lang-users

EXP should be

[eE](-|+)?(INT1)

Artyom Shalkhakov

unread,
Jun 27, 2016, 11:58:42 AM6/27/16
to ats-lang-users
Thanks Hongwei! I will take a look to see if this is what my syntax definition captures tomorrow.

Here's the code, in a gist:

https://gist.github.com/ashalkhakov/a86dfb4770cff12d0cdf298405a58d74

It can be tested by visiting:

https://microsoft.github.io/monaco-editor/monarch.html

and pasting the syntax definition into the textbox. I've also provided an example input (some rubbish to help figure out if hilighting is well-behaved).

This needs more testing and tuning, but seems like a worthwhile effort!

gmhwxi

unread,
Jun 28, 2016, 11:54:39 PM6/28/16
to ats-lang-users

Thanks for the effort!

These days I have been thinking about building some sort of on-line coding
system of ATS. The manaco editor looks pretty decent. When your syntax definition
is ready, I will give it a try.

Artyom Shalkhakov

unread,
Jun 29, 2016, 11:17:56 PM6/29/16
to ats-lang-users
On Wednesday, June 29, 2016 at 9:54:39 AM UTC+6, gmhwxi wrote:

Thanks for the effort!

These days I have been thinking about building some sort of on-line coding
system of ATS. The manaco editor looks pretty decent. When your syntax definition
is ready, I will give it a try.


I'm currently in the process of writing unit-tests (caught a bug with a comment already!).

It's taking quite some time. Will let you know if something fruitful comes out of it.

Artyom Shalkhakov

unread,
Aug 16, 2016, 12:07:35 AM8/16/16
to ats-lang-users
The PR adding ATS/Postiats colorization support to Monaco editor has been merged.
Message has been deleted

gmhwxi

unread,
Aug 16, 2016, 1:15:51 AM8/16/16
to ats-lang-users
This is great news!

I really want to try it for my upcoming class.

Could you show me how to use the Monaco editor to
replace the textareas in the following page:

http://myflask-tutoriats.rhcloud.com/assign01
view-source:http://myflask-tutoriats.rhcloud.com/assign01

Thanks!

Artyom Shalkhakov

unread,
Aug 16, 2016, 3:58:28 AM8/16/16
to ats-lang-users
On Tuesday, August 16, 2016 at 11:15:51 AM UTC+6, gmhwxi wrote:
This is great news!

I really want to try it for my upcoming class.

Could you show me how to use the Monaco editor to
replace the textareas in the following page:

http://myflask-tutoriats.rhcloud.com/assign01
view-source:http://myflask-tutoriats.rhcloud.com/assign01

Sure! I will see if I can do something ASAP. (Pretty busy with other stuff lately...)

Steinway Wu

unread,
Aug 16, 2016, 9:02:08 AM8/16/16
to ats-lang-users
Great job! 

Zhiqiang Ren

unread,
Aug 17, 2016, 2:53:43 PM8/17/16
to ats-lang-users
Great. Looking forward to using it.
Reply all
Reply to author
Forward
0 new messages