BNF Grammar: Difference between revisions

Content added Content deleted
(→‎Python: Removed.)
(Remove languages that are redundant with {{language|bnf=...}}. Remove Lua; the grammar is a copy from its {{language|bnf=...}} link. Remove Tcl; it just links to Tcl#Grammar.)
Line 7: Line 7:


'''This is a deprecated task. Please move these grammars to the language's category page, or somewhere else.'''
'''This is a deprecated task. Please move these grammars to the language's category page, or somewhere else.'''

==[[:Category:Ada|Ada]]==
A BNF description of the language syntax is a part of its standard, [http://www.adaic.org/standards/1zrm/html/RM-P.html see Ada Reference Manual, Annex P].
==[[:Category:ALGOL 60|ALGOL 60]]==
A BNF description of the language syntax is a part of following,
[http://eli-project.sourceforge.net/a60_html/a60.html#s2 ALGOL 60 ][http://www.masswerk.at/algol60/syntax.txt -Syntax of ALGOL 60]


==[[:Category:BASIC|BASIC]]==
==[[:Category:BASIC|BASIC]]==
Line 391: Line 385:
Code ::= Command Code | <NONE>
Code ::= Command Code | <NONE>
Command ::= "+" | "-" | "<" | ">" | "," | "." | "[" Code "]" | <ANY>
Command ::= "+" | "-" | "<" | ">" | "," | "." | "[" Code "]" | <ANY>

==[[:Category:C|C]]==
The Syntax follows, [http://c.comsci.us/syntax/index.html C Syntax]

==[[:Category:C++|C++]]==
The Syntax follows, [http://cpp.comsci.us/syntax/statement/index.html C++ Syntax]

==[[:Category:C sharp|C sharp]]==
See the following, [http://csharp.comsci.us/syntax/expression/ebnf.html C-sharp syntax]

==[[:Category:COBOL|COBOL]]==
See link [http://www.cs.vu.nl/~x/grammars/cobol/ COBOL Grammer]

==[[:Category:Delphi|Delphi]]==
IEBNF Syntax follows [http://www.felix-colibri.com/papers/compilers/delphi_5_grammar/delphi_5_grammar.html Dephi 5 Syntax]

==[[:Category:Fortran|Fortran]]==
The BNF description follows, [http://fortran.comsci.us/syntax/statement/index.html Fortran Syntax]

==[[:Category:Haskell|Haskell]]==
BNF-like description can be found at [http://haskell.org/onlinereport/index.html Haskell 98] Part I, chapters 2,3 and 4.

==[[:Category:J|J]]==

A draft [[J:Backus–Naur Form|BNF representation of J's syntax]] is up on the J wiki.

==[[:Category:Java|Java]]==
The BNF description follows, [http://www.cui.unige.ch/db-research/Enseignement/analyseinfo/JAVA/BNFindex.html BNF index of Java Language Grammar]

==[[:Category:JavaScript|JavaScript]]==
The BNF description follows, [http://javascript.comsci.us/syntax/statement/bnf.html JavaScript Syntax]

==[[:Category:Lisp|Lisp]]==
See link on syntax [http://cui.unige.ch/db-research/Enseignement/analyseinfo/LISP/BNFindex.html Lisp Syntax]
Outside of particularly restricted variants, no static grammar can exactly describe Lisp due to macros and reader-macros.

==[[:Category:Lua|Lua]]==
<div style="height:30ex;overflow:scroll"><pre>
chunk ::= {stat [`;´]} [laststat [`;´]]

block ::= chunk

stat ::= varlist `=´ explist |
functioncall |
do block end |
while exp do block end |
repeat block until exp |
if exp then block {elseif exp then block} [else block] end |
for Name `=´ exp `,´ exp [`,´ exp] do block end |
for namelist in explist do block end |
function funcname funcbody |
local function Name funcbody |
local namelist [`=´ explist]

laststat ::= return [explist] | break

funcname ::= Name {`.´ Name} [`:´ Name]

varlist ::= var {`,´ var}

var ::= Name | prefixexp `[´ exp `]´ | prefixexp `.´ Name

namelist ::= Name {`,´ Name}

explist ::= {exp `,´} exp

exp ::= nil | false | true | Number | String | `...´ | function |
prefixexp | tableconstructor | exp binop exp | unop exp

prefixexp ::= var | functioncall | `(´ exp `)´

functioncall ::= prefixexp args | prefixexp `:´ Name args

args ::= `(´ [explist] `)´ | tableconstructor | String

function ::= function funcbody

funcbody ::= `(´ [parlist] `)´ block end

parlist ::= namelist [`,´ `...´] | `...´

tableconstructor ::= `{´ [fieldlist] `}´

fieldlist ::= field {fieldsep field} [fieldsep]

field ::= `[´ exp `]´ `=´ exp | Name `=´ exp | exp

fieldsep ::= `,´ | `;´

binop ::= `+´ | `-´ | `*´ | `/´ | `^´ | `%´ | `..´ |
`<´ | `<=´ | `>´ | `>=´ | `==´ | `~=´ |
and | or

unop ::= `-´ | not | `#´
</pre></div>
Source: http://www.lua.org/manual/5.1/manual.html

==[[:Category:Modula-2|Modula-2]]==
See link on syntax [http://cui.unige.ch/db-research/Enseignement/analyseinfo/Modula2/BNFindex.html BNF Modula2]


==[[:Category:PARI/GP|PARI/GP]]==
==[[:Category:PARI/GP|PARI/GP]]==
Line 498: Line 393:
Also [[wp:Van Wijngaarden grammar|Van Wijngaarden's grammar]] can be used to define
Also [[wp:Van Wijngaarden grammar|Van Wijngaarden's grammar]] can be used to define
[[Pascal]]'s grammar[http://www-users.cs.york.ac.uk/~fisher/software/yoyovwg/exs/pascal.vwg].
[[Pascal]]'s grammar[http://www-users.cs.york.ac.uk/~fisher/software/yoyovwg/exs/pascal.vwg].

==[[:Category:Perl|Perl]]==
The BNF description follows, [http://perl.comsci.us/syntax/statement/index.html Perl Syntax]

==[[:Category:PHP|PHP]]==
The BNF description follows, [http://php.comsci.us/syntax/statement/index.html PHP Syntax]


==[[:Category:PowerShell|PowerShell]]==
==[[:Category:PowerShell|PowerShell]]==
Line 512: Line 401:
but the grammar would require
but the grammar would require
<lang powershell>for (;;) {}</lang>
<lang powershell>for (;;) {}</lang>

==[[:Category:Ruby|Ruby]]==
Syntax follows [http://web.njit.edu/all_topics/Prog_Lang_Docs/html/ruby/yacc.html Ruby Syntax]
==[[:Category:Scala|Scala]]==
The [http://www.scala-lang.org/docu/files/ScalaReference.pdf Scala Specification] contains an Extended BNF under Scala Syntax Summary, Chapter A.
==[[:Category:Scheme|Scheme]]==
The formal syntax for Scheme is written in an extended BNF in [http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-7.html#node_chap_4 chapter 4] of the [http://www.r6rs.org/final/html/r6rs/r6rs.html Revised^6 Report on the Algorithmic Language Scheme].
==[[:Category:SQL|SQL]]==
Syntax for SQL follows, [http://savage.net.au/SQL/sql-2003-2.bnf.html BNF Sytax for SQL Database Language]

==[[:Category:Smalltalk|Smalltalk]]==
Smalltalk Syntax follows, [http://github.com/aquasync/ruby-ometa/blob/60deea23abe7eb07d200233dde4213d74041b81f/smalltalk.syntax Smalltalk Syntax]

==[[:Category:Tcl|Tcl]]==
Though Tcl is not typically described using BNF, an approximation of the base language grammar can be written in a [[:Category:Tcl#Grammar|BNF-like grammar]]. Note however that the grammar properly omits things present in other languages (notably keywords) because it lacks them entirely; the analogs of them are merely parts of the standard language library.


==[[:Category:VBScript|VBScript]]==
==[[:Category:VBScript|VBScript]]==