怎么建立一个网站广告,免费域名申请方法,网站模板 自适应,河南省网站目标是确认一些c/cpp的语法细节#xff0c;需要看cpp语法定义文件。 考虑从c的语法定义文件开始确认。 考虑实现一个简化的语言定义和编译器#xff0c;为后续的实际需求做自定义扩展。
参考网页#xff1a; https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_f…目标是确认一些c/cpp的语法细节需要看cpp语法定义文件。 考虑从c的语法定义文件开始确认。 考虑实现一个简化的语言定义和编译器为后续的实际需求做自定义扩展。
参考网页 https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form 中文参考https://www.jianshu.com/p/15efcb0c06c8 C11 : ISO/IEC 9899:2011 http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf 6.4 Lexical elements 开始 EBNF定义 https://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf EBNF图示定义https://www.ics.uci.edu/~pattis/misc/ebnf2.pdf
每种语言都可能对标准BNF做了扩展但基本都比较好理解。 BNFBackus–Naur Form 巴科斯-诺尔范式无确切规范 EBNF: Extended BNF 扩展的无标准 ABNF :augmented BNF 增强型适合解析不适合阅读
典型的元语言BNF用来描述语法的一种形式体系。
:: 被定义为EBNF中为引号中的字符本身EBNF中也支持单引号
double_quote 引号用double_quote转义
| 或
, 串接中间无任何字符
; EBNF中为终止类似c语言必选项
[] 可选EBNF中单个?也表示可选
{} 重复
() 分组优先级类似c语言
...表示各种列举或省略的代码片断示例a...z
... 表示 由 双引号 包围起来的任意字符
(*...*)注释EBNF
?...?特殊序列EBNF
-排除除去EBNFISO/IEC 14977 标准给出的ENBF符号表共12种符号 ,;|[]{}()“”‘’??- https://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf
用 EBNF范式 来描述 EBNF 的语法
生成式 生成式名 [ 表达式 ] [;] ;
表达式 选择项 { | 选择项 } ;
选择项 条目 { 条目 } ;
条目 生成式名 | 标记 [ … 标记 ] | 分组 | 可选项 | 重复项 ;
分组 ( 表达式 ) ;
可选项 [ 表达式 ] ;
重复项 { 表达式 } ;用EBNF描述xml基于chatgpt。可能并不准确只是示例。 完整的在https://www.w3.org/TR/2004/REC-xml-20040204/#sec-notation
Document :: Prolog Element
Prolog :: ?xml Version Encoding? ?
Version :: version Eq (1.0 | 1.1)
Encoding :: encoding Eq ( EncName | EncName )
Eq ::
Element :: Name AttrList? Content / Name
AttrList :: Attribute
Attribute :: Name Eq ( Value | Value )
Content :: (Element | Data)*
Data :: (characters not including or )
Name :: (Letter | _) (NameChar)*
NameChar :: Letter | Digit | . | - | _ | :
Letter :: [A-Za-z]
Digit :: [0-9]
EncName :: [A-Za-z] [A-Za-z0-9._-]*BNF变体列表http://www.cs.man.ac.uk/~pjj/bnf/ebnf.html 其中C语言为Intermediate风格BNF变体。 Intermediate BNF说明https://www.cl.cam.ac.uk/~mgk25/iso-14977-paper.pdf C语言语法定义的字体说明 C语言语法示例