Package cruise.umple.compiler
Class Parser
java.lang.Object
cruise.umple.compiler.Parser
- Direct Known Subclasses:
ContentParser
,JsonParser
,UmpleInternalParser
public class Parser
extends java.lang.Object
Parses an Umple file (.ump) based on grammar rules.
As parsing is going on "tokens" will be created and linked together in a hierarchy fashion based on what was parsed.
-
Constructor Summary
-
Method Summary
Modifier and Type Method Description boolean
addCouple(Couple aCouple)
boolean
addCoupleAt(Couple aCouple, int index)
boolean
addGrammarRule(java.lang.String aGrammarRule)
boolean
addOrMoveCoupleAt(Couple aCouple, int index)
boolean
addOrMoveRuleAt(Rule aRule, int index)
boolean
addRule(Rule aRule)
void
addRule(java.lang.String input)
boolean
addRuleAt(Rule aRule, int index)
int
addRulesInFile(java.lang.String filenameOrResourcePath)
void
delete()
void
genRuleHtml(java.lang.String ruleName, java.lang.StringBuilder answer, java.lang.String cleanedUpRule, int hasMinus, int hasHash)
void
genRuleLezer(java.lang.String ruleName, java.lang.StringBuilder answer, java.lang.String cleanedUpRule, int hasMinus, int hasHash)
Couple
getCouple(int index)
java.util.List<Couple>
getCouples()
java.lang.String
getFilename()
The Umple file (.ump) that will be parsed.java.lang.String
getGrammarRule(int index)
java.lang.String[]
getGrammarRules()
java.lang.String
getName()
default 'program'ParseResult
getParseResult()
The results of the parsing, and any errors/warning messages will be stored here.Token
getRootToken()
Every parser makes use of "tokens" that are built up based on what is parsed.Rule
getRule(int index)
Rule
getRule(java.lang.String ruleName)
java.util.List<Rule>
getRules()
A parser can have many "rules", likewise each rule can be part of many "parsers"; hence many-to-many.Token
getToken(int index)
java.util.List<Token>
getTokens()
boolean
hasCouples()
boolean
hasGrammarRules()
boolean
hasRules()
boolean
hasTokens()
int
indexOf(Token aToken)
int
indexOfCouple(Couple aCouple)
int
indexOfGrammarRule(java.lang.String aGrammarRule)
int
indexOfRule(Rule aRule)
static int
minimumNumberOfCouples()
static int
minimumNumberOfRules()
int
numberOfCouples()
int
numberOfGrammarRules()
int
numberOfRules()
int
numberOfTokens()
ParseResult
parse(java.lang.String ruleName, java.lang.String input)
Parses input based on a rule.boolean
removeCouple(Couple aCouple)
boolean
removeGrammarRule(java.lang.String aGrammarRule)
boolean
removeRule(Rule aRule)
Token
reset()
boolean
setFilename(java.lang.String aFilename)
boolean
setName(java.lang.String aName)
boolean
setParseResult(ParseResult aParseResult)
boolean
setRootToken(Token aRootToken)
java.lang.String
toGrammar()
Default grammar generation to htmljava.lang.String
toGrammarHtml()
Used to generate a nice html representation for the user manualjava.lang.String
toGrammarLezer()
Used to generate a lezer grammar.java.lang.String
toGrammarNoStyle()
java.lang.String
toGrammarParts(java.lang.String rulesToOutput)
Default grammar output to html formatjava.lang.String
toGrammarParts(java.lang.String rulesToOutput, java.lang.String grammarFormat)
Converts specific Umple rules to an alternative format If rulesToOutput is empty then all rules are outputjava.lang.String
toString()
java.lang.StringBuffer
toString(java.lang.StringBuffer stringSoFar, Token currentToken)
Output the parse tree.
-
Constructor Details
-
Method Details
-
setFilename
public boolean setFilename(java.lang.String aFilename) -
setName
public boolean setName(java.lang.String aName) -
addGrammarRule
public boolean addGrammarRule(java.lang.String aGrammarRule) -
removeGrammarRule
public boolean removeGrammarRule(java.lang.String aGrammarRule) -
setParseResult
-
setRootToken
-
getFilename
public java.lang.String getFilename()The Umple file (.ump) that will be parsed. -
getName
public java.lang.String getName()default 'program' -
getGrammarRule
public java.lang.String getGrammarRule(int index) -
getGrammarRules
public java.lang.String[] getGrammarRules() -
numberOfGrammarRules
public int numberOfGrammarRules() -
hasGrammarRules
public boolean hasGrammarRules() -
indexOfGrammarRule
public int indexOfGrammarRule(java.lang.String aGrammarRule) -
getParseResult
The results of the parsing, and any errors/warning messages will be stored here. -
getRootToken
Every parser makes use of "tokens" that are built up based on what is parsed. In the end it looks almost like a "tree". This is the starting token for which everything will be built off of (sub-tokens). -
getRule
-
getRules
A parser can have many "rules", likewise each rule can be part of many "parsers"; hence many-to-many. -
numberOfRules
public int numberOfRules() -
hasRules
public boolean hasRules() -
indexOfRule
-
getCouple
-
getCouples
-
numberOfCouples
public int numberOfCouples() -
hasCouples
public boolean hasCouples() -
indexOfCouple
-
minimumNumberOfRules
public static int minimumNumberOfRules() -
addRule
-
removeRule
-
addRuleAt
-
addOrMoveRuleAt
-
minimumNumberOfCouples
public static int minimumNumberOfCouples() -
addCouple
-
removeCouple
-
addCoupleAt
-
addOrMoveCoupleAt
-
delete
public void delete() -
reset
-
getRule
-
toString
public java.lang.String toString()- Overrides:
toString
in classjava.lang.Object
-
toGrammarNoStyle
public java.lang.String toGrammarNoStyle() -
toGrammar
public java.lang.String toGrammar()Default grammar generation to html -
toGrammarHtml
public java.lang.String toGrammarHtml()Used to generate a nice html representation for the user manual -
toGrammarLezer
public java.lang.String toGrammarLezer()Used to generate a lezer grammar. See https://lezer.codemirror.net/docs/guide/#writing-a-grammar -
toGrammarParts
public java.lang.String toGrammarParts(java.lang.String rulesToOutput)Default grammar output to html format -
toGrammarParts
public java.lang.String toGrammarParts(java.lang.String rulesToOutput, java.lang.String grammarFormat)Converts specific Umple rules to an alternative format If rulesToOutput is empty then all rules are output -
genRuleHtml
public void genRuleHtml(java.lang.String ruleName, java.lang.StringBuilder answer, java.lang.String cleanedUpRule, int hasMinus, int hasHash) -
genRuleLezer
public void genRuleLezer(java.lang.String ruleName, java.lang.StringBuilder answer, java.lang.String cleanedUpRule, int hasMinus, int hasHash) -
toString
Output the parse tree. The code originally here has been refactored to Token class -
addRulesInFile
public int addRulesInFile(java.lang.String filenameOrResourcePath) -
addRule
public void addRule(java.lang.String input) -
parse
Parses input based on a rule.- Parameters:
ruleName
- The rule to parse based on.input
- The textual input to parse (such as that from the Umple file).- Returns:
- The result of the parsing.
-
getToken
-
getTokens
-
numberOfTokens
public int numberOfTokens() -
hasTokens
public boolean hasTokens() -
indexOf
-