Parsing

This section contains definitions declared in the chpl::parsing namespace.

namespace chpl::parsing

Typedefs

using ModuleVec = std::vector<const uast::Module*>

Functions

const FileContents &fileText(Context *context, std::string path)

This query returns the contents of a file as the string field in the FileContents. In case there is an error reading the file, the error is stored in the error field of the FileContents.

const FileContents &fileText(Context *context, UniqueString path)

Convenience function to call fileText given a UniqueString.

void setFileText(Context *context, std::string path, FileContents result)

This function sets the FileContents that will be returned by the fileText query above.

void setFileText(Context *context, std::string path, std::string text)

This function sets the string that will be returned by the fileText query above. The FileContents stored will have an empty ErrorMessage field.

void setFileText(Context *context, UniqueString path, std::string text)

This function sets the string that will be returned by the fileText query above. The FileContents stored will have an empty ErrorMessage field.

bool hasFileText(Context *context, const std::string &path)

This function returns true if the current revision already has contents stored in the fileText query for the given path.

const uast::BuilderResult &parseFile(Context *context, UniqueString path)

This query reads a file (with the fileText query) and then parses it.

Any errors encountered will be reported to the Context.

const Location &locateId(Context *context, ID id)

This query returns the Location where a particular ID appeared. It cannot be used for Comments because Comments don’t have IDs set. If Locations for Comments are needed, use uast::BuilderResult::commentToLocation

const Location &locateAst(Context *context, const uast::ASTNode *ast)

This function just runs locateId on ast->id(). Similarly to locateID, it cannot be used to get a Location for a Comment.

const ModuleVec &parse(Context *context, UniqueString path)

This query returns a vector of parsed modules given a file path.

const std::vector<std::string> &moduleSearchPath(Context *context)

Return the current module search path.

void setModuleSearchPath(Context *context, std::vector<std::string> searchPath)

Sets the current module search path.

const uast::Module *getToplevelModule(Context *context, UniqueString name)

This query parses a toplevel module by name. Returns nullptr if no such toplevel module can be found in the module search path.

const uast::ASTNode *idToAst(Context *context, ID id)

Returns the uast node with the given ID.

uast::ASTTag idToTag(Context *context, ID id)

Returns the tag for the node with the given ID.

const ID &idToParentId(Context *context, ID id)

Returns the parent ID given an ID

uast::Function::ReturnIntent idToFnReturnIntent(Context *context, ID id)

Given an ID that represents a Function, get the declared return intent for that function.

bool functionWithIdHasWhere(Context *context, ID id)

Returns ‘true’ if the passed ID represents a Function with a where clause, and ‘false’ otherwise.

class FileContents
#include <FileContents.h>

This class represents the result of reading a file.

Public Functions

inline FileContents()

Construct a FileContents containing empty text and no error

inline FileContents(std::string text)

Construct a FileContents containing the passed text and no error

inline FileContents(std::string text, ErrorMessage error)

Construct a FileContents containing the passed text and error

inline const std::string &text() const

Return a reference to the contents of this file

inline const ErrorMessage &error() const

Return a reference to an error encountered when reading this file

inline bool operator==(const FileContents &other) const
inline bool operator!=(const FileContents &other) const
inline void swap(FileContents &other)
inline void mark(Context *context) const

Public Static Functions

static inline bool update(FileContents &keep, FileContents &addin)
class Parser
#include <Parser.h>

A class for parsing

Public Functions

~Parser() = default
inline Context *context()

Return the AST Context used by this Parser.

uast::BuilderResult parseFile(const char *path)

Parse a file at a particular path.

uast::BuilderResult parseString(const char *path, const char *str)

Parse source code in a string. ‘path’ is only used for certain errors.

Public Static Functions

static owned<Parser> build(Context *context)