Annotation of researchv10no/cmd/sml/doc/refman/gram.tex, revision 1.1

1.1     ! root        1: \chapter{Syntax of the full language}
        !             2: \label{grammar}
        !             3: {\samepage
        !             4: \renewcommand{\lhs}[1]{\pagebreak[1] \\ \vspace{2ex}
        !             5:                         #1 \  \( \rightarrow \) \' }
        !             6: \newcommand{\also}[0]{\nopagebreak[3] \\}
        !             7: \begin{tabbing}
        !             8: longword \( \rightarrow \) \= \{ lab = exp , \rep{0} , lab = exp \} \
        !             9: \ \ \ \= \kill
        !            10: \+
        !            11: \lhs{ide}        ID \> {\em symbolic or alphabetic}
        !            12: \also      \verb"*" \> {\em \verb"*" is legal as a value-identifer}
        !            13: \also      =      \> {\em \verb"=" may be used but not rebound }
        !            14: \lhs{opid}       ide \>
        !            15: \also      \res{op} ide \> {\em removes infix status }
        !            16: \lhs{qualid}     ide
        !            17: \also      ID . qualid
        !            18: \lhs{ident}      opid
        !            19: \also      qualid
        !            20: \lhs{lab}      ID \>
        !            21: \also      INT \> {\em numeric labels}
        !            22: \lhs{const}      INT  \>
        !            23: \also      REAL   \>
        !            24: \also      STRING  \>
        !            25: \also      ()     \>
        !            26: \also      ident \> {\em nullary constructor}
        !            27: \lhs{exp}        ident \> {\em variable}
        !            28: \also      const
        !            29: \also      \# lab \> {\em field selector }
        !            30: \also      \{ lab = exp , \rep{0} , lab = exp \} \> {\em record}
        !            31: \also      ( exp , \rep{2} , exp )  \> {\em tuple }
        !            32: \also      ( exp ; \rep{1} ; exp )  \> {\em sequence }
        !            33: \also      \verb"[" exp , \rep{0} , exp \verb"]" \> {\em list}
        !            34: \also      \res{let} decs \res{in} expseq \res{end} \> {\em local
        !            35: declaration}
        !            36: \also      exp exp \> {\em application; left--associative}
        !            37: \also      exp ide exp \>{\em infixed application}
        !            38: \also      exp : ty \>{\em type constraint}
        !            39: \also      exp \res{andalso} exp \>{\em conjunction}
        !            40: \also      exp \res{orelse} exp \>{\em disjunction}
        !            41: \also      \res{fn} match \>{\em function}
        !            42: \also      \res{case} exp \res{of} match \>{\em case expression}
        !            43: \also      \res{while} exp \res{do} exp \>{\em iteration}
        !            44: \also      \res{if} exp \res{then} exp \res{else} exp \>{\em conditional}
        !            45: \also      exp \res{handle} match \>{\em handle exception; right--associative}
        !            46: \also      \res{raise} exp \>{\em raise exception}
        !            47: \lhs{match}      pat \verb"=>" exp $\mid$ \rep{1} $\mid$ pat \verb"=>" exp \>
        !            48: \lhs{apat}       ident  \>{\em  variable binding }
        !            49: \also      const \>{\em constant pattern}
        !            50: \also      \verb"_" \>{\em wildcard}
        !            51: \also      ( pat )
        !            52: \also      ( pat , \rep{2} , pat) \>{\em tuple}
        !            53: \also      \{ patfield , \rep{0} , patfield \} \>{\em record}
        !            54: \also      \{ patfield , \rep{0} , patfield , ... \} \>{\em flexible record}
        !            55: \also      \verb"[" pat , \rep{0} , pat \verb"]" \>{\em list}
        !            56: \lhs{pat}        apat \>{\em atomic}
        !            57: \also      ident apat \>{\em construction; left--associative}
        !            58: \also      pat ide pat \>{\em infixed construction}
        !            59: \also      pat : ty \>{\em type constraint}
        !            60: \also      opid constraint \res{as} pat \>{\em layered}
        !            61: \lhs{patfield}   lab = pat \>{\em normal}
        !            62: \also        ID \>{\em abbreviation}
        !            63: \also        ID \res{as} pat \>{\em abbreviation}
        !            64: \lhs{ty}         \res{tyvar} \>{\em type variable}
        !            65: \also      \{ lab : ty , \rep{0} , lab : ty \} \>{\em record type}
        !            66: \also      ( ty )
        !            67: \also      ( ty , \rep{2} , ty ) qualid \>{\em type construction}
        !            68: \also      ty qualid \>{\em unary type construction}
        !            69: \also      qualid \>{\em nullary type construction}
        !            70: \also      ty \verb"*" \rep{2} \verb"*" ty \>{\em typle type}
        !            71: \also      ty \verb"->" ty   \>{\em function type; right--associative}
        !            72: \lhs{vb}         pat = exp  \>{\em simple }
        !            73: \also vb \res{and} \rep{1} \res{and} vb \>{\em multiple}
        !            74: \lhs{constraint}       \>  {\em absent}
        !            75: \also          : ty \>{\em type constraint}
        !            76: \lhs{rvb}        opid constraint = \res{fn} match \>{\em simple recursive}
        !            77: \also rvb \res{and} \rep{1} \res{and} rvb \>{\em mutually recursive}
        !            78: \lhs{clause}     opid apat \rep{1} apat constraint = exp \>{\em prefix}
        !            79: \also      pat ide pat constraint = exp \>{\em infix}
        !            80: \lhs{fb}         clause $\mid$ \rep{1} $\mid$ clause \>{\em clausal function}
        !            81: \also fb \res{and} \rep{1} \res{and} fb \>{\em mutually recursive}
        !            82: \lhs{tb}         tyvars ID = ty  \>{\em simple }
        !            83: \also tb \res{and} \rep{1} \res{and} tb \>{\em multiple}
        !            84: \lhs{tyvars}    \> {\it absent} 
        !            85: \also      \res{tyvar} \>{\em single}
        !            86: \also      ( \res{tyvar} , \rep{2} , \res{tyvar} ) \>{\em multiple}
        !            87: \lhs{db}         tyvars ID = constr $\mid$ \rep{1} $\mid$ constr \>{\em
        !            88: simple}
        !            89: \also  db \res{and} \rep{1} \res{and} db \>{\em mutually recursive}
        !            90: \lhs{constr}     opid \>{\em nullary (constant)}
        !            91: \also      opid \res{of} ty \>{\em unary}
        !            92: \lhs{eb}         ide   \>{\em nullary (constant)}
        !            93: \also      ide \res{of} ty \>{\em unary}
        !            94: \also      ide = qualid \>{\em re--naming}
        !            95: \also eb \res{and} \rep{1} \res{and} eb \>{\em multiple}
        !            96: \lhs{ldec}       \res{val} vb \>{\em value declaration}
        !            97: \also      \res{val} \res{rec} rvb \>{\em recursive value declaration}
        !            98: \also      \res{fun} fb \>{\em function declaration}
        !            99: \also      \res{type} tb \>{\em type declaration}
        !           100: \also      \res{datatype} db \>{\em datatype declaration}
        !           101: \also      \res{exception} eb  \>{\em exception declaration}
        !           102: \also      \res{local} ldec \res{in} ldec \res{end} \>{\em local
        !           103: declaration}
        !           104: \also      \res{open} qualid \rep{1} qualid \>{\em structure visibility}
        !           105: \also      fixity ide \rep{1} ide  \>{\em directive}
        !           106: \also      ldec ldec  \>{\em declaration sequence}
        !           107: \also      ldec \verb";" \>{\em optional semicolon}
        !           108: \lhs{fixity}     \res{infix} INT \>{\em declare infix,
        !           109: left--associative}
        !           110: \also      \res{infix} \>{\em declare infix, precedence 0}
        !           111: \also      \res{infixr} INT \>{\em infix, right associative}
        !           112: \also      \res{infixr}  \>{\em infix, right assoc., prec. 0}
        !           113: \also      \res{nonfix}  \>{\em cancel infix status}
        !           114: \lhs{sgn}        ID
        !           115: \also      \res{sig} specs \res{end}
        !           116: \lhs{specs}      spec
        !           117: \also      specs spec
        !           118: \also      specs ;
        !           119: \lhs{spec}       \res{structure} ID : sgn \res{and} \rep{1} \res{and} ID : sgn
        !           120: \also      \res{datatype} db \res{and} \rep{1} \res{and} db
        !           121: \also      \res{type} tyvars ID \res{and} \rep{1} \res{and} tyvars ID
        !           122: \also      \res{val} ide : ty \res{and} \rep{1} \res{and} ide : ty
        !           123: \also      \res{exception} exnspec \res{and} \rep{1} \res{and} exnspec
        !           124: \also      \res{sharing} sharspec \res{and} \rep{1} \res{and} sharspec
        !           125: \lhs{exnspec}    ide
        !           126: \also       ide \res{of} ty
        !           127: \lhs{sharspec}   qualid = \rep{2} = qualid
        !           128: \end{tabbing}
        !           129: This description is at present incomplete, as it is missing the
        !           130: grammar rules for structures and functors.
        !           131: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.