Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Thanks, that's a good case.

Actually, the JavaScript semicolon insertion algorithm [0] seems more complex than I had remembered. I had thought of them as variations on the semicolon insertion in BCPL, but it seems like that's an oversimplification.

For reference, these are the BCPL rules:

The canonical symbol SEMICOLON is inserted between pairs of items if they appeared on different lines and if the first was from the set of items which may end a command or definition, namely:

  BREAK RETURN FINISH REPEAT SKET RKET 
  SECTKET NAME STRINGCONST NUMBER TRUE FALSE 
and the second is from the set of items which may start: a command, namely:

  TEST FOR IF UNLESS UNTIL WHILE GOTO RESULTIS 
  CASE DEFAULT BREAK RETURN FINISH SECTBRA 
  RBRA VALOF LV RV NAME
...

( ) [ ] § § are used to denote RBRA RKET SBRA SKET SECTBRA and SECTKET.

[0]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: