zoukankan      html  css  js  c++  java
  • LUA5.3的BNF范式学习笔记

     BNF巴科斯范式 {A} 表示 0 或多个 A , [A] 表示一个可选的 A 
     
    chunk ::= block
    block ::= {stat} [retstat]
    stat ::= ‘;’ |
    varlist ‘=’ explist | --变量列表=表达式列表
    functioncall |
    label |
    break |
    goto Name |
    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]
     
    varlist ::= var {‘,’ var} 变量列表是一个或多个 var
    var ::= Name | prefixexp ‘[’ exp ‘]’ | prefixexp ‘.’ Name
    VAR是Name 或者前缀表达式[表达式]或者前缀表达式.Name
    prefixexp ::= var | functioncall | ‘(’ exp ‘)’
    prefixexp 前缀表达式:变量 或者 函数调用 或者(表达式)
    functioncall ::= prefixexp args | prefixexp ‘:’ Name args
    前缀表达式 参数 或者 前缀表达式:变量 参数
    args ::= ‘(’ [explist] ‘)’ | tableconstructor | LiteralString
    参数 (表达式列表) 或 表的构造式 或 字符串
    refixe xp前缀表达式
    exp ::= nil | false | true | Numeral | LiteralString | ‘...’ | functiondef | prefixexp | tableconstructor | exp binop exp | unop exp
    表达式=空或false或ture或数字或字符串或...或函数定义或前缀表达式
    或表构造或 表达式二元操作符表达式 或 一元操作符表达式
    label ::= ‘::’ Name ‘::’ 纯标记用于goto
     
     
    Lua 中的 NAME名字 (也被称为 标识符) 可以是由非数字打头的任意字母下划线和数字构成的字符串。 标识符可用于对变量、表的域、以及标签命名。
    下列 关键字 是保留的,不可用于名字:
    and break do else elseif end false for function goto if in local nil not or repeat return then true until while
    Lua 语言对大小写敏感: and 是一个保留字,但 And 与 AND 则是两个不同的有效名字。 作为一个约定,程序应避免创建以下划线加一个或多个大写字母构成的名字 (例如 _VERSION)。
    下列字符串是另外一些符记:
    + - * / % ^ # & ~ | << >> // == ~= <= >= < > = ( ) { } [ ] :: ; : , . .. ...
     
     
    后记,事实上,还有优先级等等细节。这个只是一个简单的语法检测。
     
  • 相关阅读:
    Java中关系操作符==的学习以及与equals的对比
    关于alibaba.fastjson的使用
    给有C或C++基础的Python入门 :Python Crash Course 1
    快速幂基本模板
    断言封装及应用(有难度)
    断言封装之key检查及kv实战示例
    正则取值及断言实战示例
    关联实现下-jsonpath取值(有难度!!耗时长)
    关联实现上-jsonpath取值
    requests顺序执行实现
  • 原文地址:https://www.cnblogs.com/facingwaller/p/6208156.html
Copyright © 2011-2022 走看看