dmd.parse

Takes a token stream from the lexer, and parses it into an abstract syntax tree.

Specification: D Grammar

Authors

Walter Bright

Source: parse.d

  • Declaration

    immutable PREC[TOK.max + 1] precedence;

    Set operator precedence for each operator.

    Discussion

    Used by hdrgen

  • Declaration

    struct ParsedLinkage(AST);

    The result of the ParseLinkage function

    • Declaration

      LINK link;

      What linkage was specified

    • Declaration

      CPPMANGLE cppmangle;

      If extern(C++, class|struct), contains the class|struct

    • Declaration

      AST.Identifiers* idents;

      If extern(C++, some.identifier), will be the identifiers

    • Declaration

      AST.Expressions* identExps;

      If `extern(C++, (some_tuple_expression)|"string"), will be the expressions

  • Declaration

    class Parser(AST): Lexer;

    • Declaration

      this(const ref Loc loc, AST.Module _module, const(char)[] input, bool doDocComment);

      Use this constructor for string mixins.

      Input: loc location in source file of mixin

    • Declaration

      RootObject parseTypeOrAssignExp(TOK endtoken = TOK.reserved);

      Parse a Type or an Expression

      Return Value

      RootObject representing the AST

    • Declaration

      AST.Parameter parseAssignCondition();

      Parse an assignment condition for if or while statements.

      Return Value

      The variable that is declared inside the condition

    • Declaration

      AST.Statement parseStatement(int flags, const(char)** endPtr = null, Loc* pEndloc = null);

      Input: flags PSxxxx

      Output: pEndloc if { ... statements ... }, store location of closing brace, otherwise loc of last token of statement

    • Declaration

      AST.Statement parseAsm();

      Parse inline assembler block.

      Return Value

      inline assembler block as a Statement

    • Declaration

      void check(Loc loc, TOK value);

      Issue error if the current token is not value, advance to next token.

      Parameters

      Loc loc

      location for error message

      TOK value

      token value to compare with

    • Declaration

      void check(TOK value);

      Issue error if the current token is not value, advance to next token.

      Parameters

      TOK value

      token value to compare with

    • Declaration

      void check(TOK value, const(char)* string);

      Issue error if the current token is not value, advance to next token.

      Parameters

      TOK value

      token value to compare with

      const(char)* string

      for error message

    • Declaration

      enum NeedDeclaratorId;

    • Declaration

      bool skipParens(Token* t, Token** pt);

      Skip parentheses.

      Parameters

      Token* t

      on opening (

      Token** pt

      *pt is set to token past ')' on true

      Return Value

      true successful false some parsing error

    • Declaration

      AST.Expression parsePrimaryExp();

      Expression Parser

    • Declaration

      static StorageClass isBuiltinAtAttribute(Identifier ident);

      Recognize builtin @ attributes

      Parameters

      Identifier ident

      identifier

      Return Value

      storage class for attribute, 0 if not

  • )