Added display name

This commit is contained in:
Borna Rajković committed 2022-06-14 21:27:40 +02:00
1 parent 7be3a1b5bc
commit eaa115d115
15 files changed
+120 -40

No files matched your search

+7
View File
@@ -256,6 +256,8 @@ struct AttributeNode : public AstNode {
ValueNode::ValueType type;
/** Name of attribute */
IdentifierNode name;
/** Display name */
std::optional<StringNode> displayName;
/** Default type of attribute */
std::optional<ValueNode> defaultValue;
/** Popup used to change attribute value */
@@ -360,6 +362,8 @@ struct ComponentNode : public AstNode {
/** Component name */
IdentifierNode name;
/** Component name */
std::optional<StringNode> displayName;
/** Tooltip displayed on hover */
std::optional<StringNode> tooltip;
/** Contains path to COMDEL source containing current component */
@@ -425,7 +429,10 @@ struct BusNode : public AstNode {
};
EnumNode<BusType> type;
/** Bus name */
IdentifierNode name;
/** Display name */
std::optional<StringNode> displayName;
/** Default used to name instances */
std::optional<IdentifierNode> instanceName;
/** Tooltip displayed on hover */
+33 -13
View File
@@ -481,6 +481,7 @@ PResult<AddressSpaceNode> ComdelParser::parseAddress() {
*
* ComponentNode := "@component" + IdentifierNode + ComponentType + "{"
* "@instanceName" + IdentifierNode
* ["@displayName" + StringNode]{0,1}
* "@tooltip" + StringNode
* "@source" + StringNode
* "@tooltip" + StringNode
@@ -507,6 +508,8 @@ PResult<ComponentNode> ComdelParser::parseComponent() {
PResult<poly<AstNode>> err;
if (consume(TokenType::KW_INSTANCE_NAME)) {
ASSIGN_OR_SET_ERR(component.instanceName, parseIdentifier());
} else if (consume(TokenType::KW_DISPLAY_NAME)) {
ASSIGN_OR_SET_ERR(component.displayName, parseString());
} else if (consume(TokenType::KW_TOOLTIP)) {
ASSIGN_OR_SET_ERR(component.tooltip, parseString());
} else if (consume(TokenType::KW_SOURCE)) {
@@ -608,6 +611,7 @@ PResult<DisplayItemNode> ComdelParser::parseDisplayItem() {
* BusNode := "@bus " + IdentifierNode + BusType + "{"
* "@tooltip" + StringNode
* "@instanceName" + StringNode
* ["@displayName" + StringNode]{0,1}
* DisplayNode
* "@wires {" + [WireNode + ","]{0..N} + WireNode "}"
* "}"
@@ -628,6 +632,8 @@ PResult<BusNode> ComdelParser::parseBus() {
PResult<poly<AstNode>> err;
if (consume(TokenType::KW_TOOLTIP)) {
ASSIGN_OR_SET_ERR(bus.tooltip, parseString());
} else if (consume(TokenType::KW_DISPLAY_NAME)) {
ASSIGN_OR_SET_ERR(bus.displayName, parseString());
} else if (consume(TokenType::KW_INSTANCE_NAME)) {
ASSIGN_OR_SET_ERR(bus.instanceName, parseIdentifier());
} else if (consume(TokenType::KW_COUNT)) {
@@ -810,10 +816,13 @@ PResult<PinNode> ComdelParser::parsePin() {
}
/****************************************************************************
*
* AttributeNode := "@attribute " + IdentifierNode + ValueType + ("default" + ValueNode){0,1} + ("{" PopupNode "}"){0,1}
*
****************************************************************************/
*
* AttributeNode := "@attribute " + IdentifierNode + ValueType + ("default" + ValueNode){0,1} + ("{"
* [PopupNode]
* ["@displayName" + StringNode]{0,1}
* "}"){0,1}
*
****************************************************************************/
PResult<AttributeNode> ComdelParser::parseAttribute() {
auto spanner = getSpanner();
AttributeNode attribute;
@@ -889,16 +898,27 @@ PResult<AttributeNode> ComdelParser::parseAttribute() {
}
}
if (check(TokenType::LBRACE)) {
RETURN_IF_NOT_TOKEN(TokenType::LBRACE);
if (!check(TokenType::KW_POPUP)) {
return unexpected();
if (consume(TokenType::LBRACE)) {
while(!consume(TokenType::RBRACE)) {
PResult<poly<AstNode>> err;
if (check(TokenType::KW_POPUP)) {
PopupNode popup;
ASSIGN_OR_SET_ERR(popup, parsePopup());
attribute.popup = std::optional<PopupNode>(popup);
} else if (consume(TokenType::KW_DISPLAY_NAME)) {
ASSIGN_OR_SET_ERR(attribute.displayName, parseString());
} else {
err = unexpected();
bump();
}
if (!err.has_value()) {
errors.push_back(err.error());
skipUntilNextKeyword();
if (check(TokenType::END_OF_FILE)) {
return PError({Span(spanner.lo), "Reached EOF"});
}
}
}
PopupNode popup;
ASSIGN_OR_RETURN_IF_ERR(popup, parsePopup());
attribute.popup = std::optional<PopupNode>(popup);
RETURN_IF_NOT_TOKEN(TokenType::RBRACE);
}
return spanner(attribute);
+1
View File
@@ -101,6 +101,7 @@ enum class TokenType {
KW_SCHEMA,
KW_POSITION,
KW_SIZE,
KW_DISPLAY_NAME,
// TYPES
INT_TYPE,
+1
View File
@@ -106,6 +106,7 @@ TokenTables::TokenTables() {
add(TokenType::KW_SCHEMA, "@schema", TOKENIZABLE | KEYWORD_NAME);
add(TokenType::KW_POSITION, "@position", TOKENIZABLE | KEYWORD_NAME);
add(TokenType::KW_SIZE, "@size", TOKENIZABLE | KEYWORD_NAME);
add(TokenType::KW_DISPLAY_NAME, "@displayName", TOKENIZABLE | KEYWORD_NAME);
// All types
add(TokenType::INT_TYPE, "int", TOKENIZABLE);