Changeset 700


Ignore:
Timestamp:
Apr 30, 2003, 1:05:09 PM (18 years ago)
Author:
sveta
Message:
  • Modified ASAIL-syntax: CONSTEXPR, DECL-CONST, t.var.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/docs/ASAIL-syntax-long.tex

    r663 r700  
    2121e.param         ::= /*empty*/ | t.var-ref e.param
    2222t.var           ::=  t.var-ref | t.var-int 
    23 t.var-ref       ::= (VAR t.QualifiedName)
    24 t.var-int       ::= (VAR t.QualifiedName)
     23t.var-ref       ::=   (STATIC (s.numb) ) | (VAR t.QualifiedName)
     24                | (TVAR t.QualifiedName) | (VVAR t.QualifiedName)
     25                | (EVAR t.QualifiedName) | (SVAR t.QualifiedName)
     26t.var-int       ::=   (STATIC (s.numb) ) | (VAR t.QualifiedName)
     27                | (TVAR t.QualifiedName) | (VVAR t.QualifiedName)
     28                | (EVAR t.QualifiedName) | (SVAR t.QualifiedName)
    2529e.body          ::= /*empty*/ | t.statement e.body
    2630t.statement     ::= t.call | t.tailcall | t.assign | t.decl
    2731                |t.if | t.for | t.continue | t.break
    2832                |t.lsplit | t.rsplit | t.catch | t.try
    29                 |t.drop | t.expr | t.deref | t.subexpr
     33                |t.drop | t.expr-obj | t.deref | t.subexpr
    3034                |t.constexpr | t.blok-label | t.decl-func
    31                 |t.error
     35                |t.error | t.decl-const
    3236                | RETURN
    3337\textit{// нОЕПЮРНП СЯОЕЬМНЦН БШУНДЮ ХГ ТСМЙЖХХ.}
     
    4246// ОЮПЮЛЕРПШ, ОЕПЕДЮБЮЕЛШЕ ОН ГМЮВЕМХЧ. }
    4347e.args          :: = /*empty*/ | t.arg e.args
    44 t.arg           ::= (VAR t.name) | (e.expr-ref) | (e.expr-int)
     48t.arg           ::= t.var | (e.expr-ref) | (e.expr-int)
    4549t.tailcall      ::= (TAILCALL t.QualifiedName (e.args) (e.args))
    4650\textit{// "уБНЯРНБНИ" БШГНБ ТСМЙЖХХ,
     
    98102s.op-bool       ::= "&&" | "||"   
    99103s.op-eq         ::= "<" | ">" | "<=" | ">=" | "=="
    100 t.for           ::= (FOR (t.label-empty)(e.cond)(e.step)e.body)
    101 \textit{// жХЙК  FOR, ЦДЕ t.label-empty - ЛЕРЙЮ ЖХЙКЮ
    102 // (ХЯОНКЭГСЕРЯЪ Б НОЕПЮРНПЕ CONTINUE),
     104t.for           ::= (FOR (e.maybe-empty)(e.cond)(e.step)e.body)
     105\textit{// жХЙК  FOR, ЦДЕ e.maybe-empty - empty ХКХ ЛЕРЙЮ ЖХЙКЮ
     106// (ДКЪ ЖХЙКЮ Я НОЕПЮРНПНЛ CONTINUE),
    103107// e.cond - СЯКНБХЕ БШОНКМЕМХЪ ЖХЙКЮ,
    104108// e.step  - НОЕПЮРНП ХРЕПЮЖХХ,
    105109// e.body - РЕКН ЖХЙКЮ.}
    106 t.label-empty   ::= t.label | /*empty*/
     110e.maybe-empty   ::= t.label | /*empty*/
    107111t.label         ::= t.QualifiedName
    108112e.step          ::= (INC-ITER t.var-ref)
     
    142146// ОЮЛЪРХ, ГЮМХЛЮЕЛНИ НАЗЕЙРНЛ  t.var-ref,
    143147// Р.Й. НМЮ ДЮКЕЕ МЕ ХЯОНКЭГСЕРЯЪ.}
    144 t.expr          ::= (EXPR t.var-ref e.expr-ref)
     148t.expr-obj      ::= (EXPR t.var-ref e.expr-ref)
    145149\textit{// йНМЯРПСЙРНП НАЗЕЙРЮ t.var-ref ЙКЮЯЯЮ Expr
    146150// ЯН ГМЮВЕМХЕЛ e.expr-ref.}
     
    155159e.pos           ::= e.expr-int
    156160e.len           ::= e.expr-int
    157 t.constexpr     ::= (CONSTEXPR t.QualifiedName e.const)
    158 \textit{// йНМЯРПСЙРНП ЙНМЯРЮМРМНЦН НАЗЕЙРЮ ЙКЮЯЯЮ Expr,
    159 // ЦДЕ t.QualifiedName - ХЛЪ ЙНМЯРЮМРШ, e.const - ЕЕ ГМЮВЕМХЕ. }
    160 e.const         ::= /*empty*/ | s.symbol
    161                 |(PAREN e.const) | (REF t.QualifiedName)
    162 \textit{// рЕПЛШ, БУНДЪЫХЕ Б e.const, ЯНЕДХМЪЧРЯЪ НОЕПЮЖХЕИ ЙНМЙЮРЕМЮЖХХ.}
    163 t.blok-label    ::= (LABEL t.label-empty e.body)
    164 \textit{// оНЛЕВЕММШИ АКНЙ, ЦДЕ e.body - РЕКН АКНЙЮ, t.label - ЛЕРЙЮ.}
     161t.constexpr     ::= (CONSTEXPR s.linkage t.const-name (e.comment)
     162                     e.const-expr)
     163\textit{// йНМЯРПСЙРНП ЙНМЯРЮМРМНЦН НАЗЕЙРЮ ЙКЮЯЯЮ Expr.}
     164s.linkage       ::= EXPORT | LOCAL
     165e.comment       ::= \emph{БШПЮФЕМХЕ (Б ЯЛШЯКЕ пЕТЮК оКЧЯ)}
     166\textit{// e.comment - БШПЮФЕМХЕ Б РНЛ БХДЕ, Б ЙНРНПНЛ НМН
     167// БЯРПЕРХКНЯЭ Б пЕТЮК-ОПНЦПЮЛЛЕ.}
     168t.const-name    ::= t.QualifiedName | (STATIC t.QualifiedName)
     169e.const-expr    ::= e.compound-expr | e.const-subexpr
     170e.compound-expr ::= [empty] | t.const-term e.const-expr
     171\textit{// рЕПЛШ, БУНДЪЫХЕ Б e.compound-expr, ЯНЕДХМЪЧРЯЪ НОЕПЮЖХЕИ
     172//ЙНМЙЮРЕМЮЖХХ.}
     173t.const-term    ::= s.symbol | (PAREN e.const-expr)
     174                | (REF t.QualifiedName)
     175                | (STATIC t.QualifiedName)
     176e.const-subexpr ::=(SUBEXPR t.const-name s.const-pos s.const-len)
     177s.const-pos     ::= s.numb
     178s.const-len     ::= s.numb
     179t.decl-const    ::= (DECL-CONST t.QualifiedName)
     180\textit{// нАЗЪБКЕМХЕ ЙНМЯРЮМРМНЦН НАЗЕЙРЮ.}
     181t.blok-label    ::= (LABEL (e.maybe-empty) e.body)
     182\textit{// аКНЙ, ЦДЕ e.body - РЕКН АКНЙЮ,
     183// e.maybe-empty - ЛЕРЙЮ ХКХ empty.}
    165184t.decl-func     ::= (DECL-FUNC  t.QualiiedName)
    166185\textit{// нАЗЪБКЕМХЕ ТСМЙЖХХ Я ХЛЕМЕЛ t.QualifiedName.}
    167 e.expr-ref      ::= /*empty*/ | t.expr-ref e.expr-ref
     186e.expr-ref      ::= /*empty*/ | t.term-ref e.expr-ref
    168187\textit{// рЕПЛШ Б пЕТЮК-БШПЮФЕМХХ НАЗЕДХМЪЧРЯЪ ЙНМЙЮРЕМЮЖХЕИ.}
    169 t.expr-ref      :: = s.symbol | t.var-ref 
     188t.term-ref      :: = s.symbol | t.var-ref 
    170189                |(PAREN e.expr-ref)
    171190\textit{// нОЕПЮРНП ''МЮБЕЬХБЮМХЪ ЯЙНАНЙ'' ДКЪ БШПЮФЕМХЪ e.expr-ref;
     
    196215\textit{// юПХТЛЕРХВЕЯЙХЕ НОЕПЮЖХХ (КЕБНЮЯЯНЖХЮРХБМШЕ) ДКЪ
    197216// ЮПЦСЛЕМРНБ РХОЮ int.}
    198 e.args-int      ::= /*empty*/ | t.args-int e.args-int
    199 t.args-int      ::= (e.expr-int)
     217e.args-int      ::= /*empty*/ | (e.expr-int) e.args-int
    200218s.op-int        ::= "+" | "-" | "*" | "/" | "%"
    201219s.numb          ::= \emph{ЯХЛБНК-ВХЯКН (Б ЯЛШЯКЕ пЕТЮК оКЧЯ)}
Note: See TracChangeset for help on using the changeset viewer.