DSL For CSS Coding Conventions

Transcription

Supplements for“Language Design and Implementationfor the Domain of Coding Conventions”Boryana Goncharenko and Vadim Zaytsev † University of Amsterdam, The Netherlands†Raincode, ixAppendixAppendixAppendixAppendixAppendixA. Claim 1 DatasetB. Claim 2 DatasetC. CSS ResearchD. Abstract Object-oriented SyntaxE. Concrete Textual SyntaxF. CssCoco PluginG. CSS Convention Examples CatalogueAppendix A. Claim 1 DatasetNumber Classification link togenerallink to wikipedia.orggenerallink to wikipedia.org1Javalink to oracle.com2Javalink to oracle.com3Basiclink to xoc.net4C#link to microsoft.com5Matlablink to columbia.edu6JSlink to javascript.crockford.com7JSlink to sideeffect.kr8Javalink to sideeffect.kr9Pythonlink to sideeffect.kr10Scalalink to sideeffect.kr11Rubylink to sideeffect.kr12C#link to sideeffect.kr13PHPlink to sideeffect.kr14C/C link to gcc.gnu.org15PHPlink to mediawiki.org16PHPlink to cakephp.org17Javalink to source.android.comgenerallink to c2.com18PHPlink to wordpress.org

4445464748495051HTMLCSSJSdataC/C C/C C/C out of scopeFortranout of scopeC/C C/C FortranLispStatout of scopeJavaC/C HTMLCSSJSout of scopedataout of scopeC/C JavaC/C dataC/C PythonC/C nal.govpython.orgfreertos.org

7778798081C#C/C FortrandataObjCMLJavaC/C FlexduplicateC/C out of scopeout of scopeC/C C/C visualRgeneralObjCdataRustC/C PHPPHPJavaC/C datageneralPHPPHPC/C duplicateC/C ASP .NETC/C C/C ualstudiomagazine.comludumdare.comscribd.com

aObjCdataout of scopeC/C dataHTMLCSSJavaRubyC/C FortrandatadatadatageneralPHPdataC/C JavahardwareC/C C/C XAMLC/C PythonC/C ro.orgbigbrotherbot.netrtems.orgliferay.com

Appendix B. Claim 2 DatasetLanguage Results Privatelee querySQL75102 “coding convention” sqlPerl52801 “coding convention” perlFortran34701 “coding convention” fortranCSS33602 “coding convention” AND %28css OR cascading style sheets%29HTML29402 “coding convention” htmlVB25301 “coding convention” vbJava24702 “coding convention” javaPHP19702 “coding convention” phpC 17302 “coding convention” c%2B%2BJS16802 “coding convention” javascriptbash13100 “coding convention” bashObjC11901 “coding convention” AND %28swift OR objective c%29Python11302 “coding convention” pythonMatlab11300 “coding convention” matlabC#10801 “coding convention” c#Abap9940 “coding convention” abapScala9110 “coding convention” scalaLisp6011 “coding convention” lispGroovy5910 “coding convention” groovyRuby5141 “coding convention” rubyAda5110 “coding convention” adaCobol3770 “coding convention” cobolLua3420 “coding convention” luaDart2860 “coding convention” dartProlog2290 “coding convention” prologRust1270 “coding convention” rustpotato997 “coding convention” potato

Appendix C. CSS ResearchThis appendix contains all 41 papers with “CSS” or “Cascading Style Sheets”in the title, that were ever published on a CSS-related topic in a peer reviewedjournal, magazine or proceedings volume.References[1] César F. Acebal, Bert Bos, María Rodríguez, and Juan Manuel CuevaLovelle. “ALMcss: a Javascript Implementation of the CSS Template Layout Module”. In: ACM Symposium on Document Engineering (DocEng).Ed. by Cyril Concolato and Patrick Schmitz. ACM, 2012, pp. 23–32. doi:10.1145/2361354.2361360.[2] Adewole Adewumi, Sanjay Misra, and Nicholas Ikhu-Omoregbe. “Complexity Metrics for Cascading Style Sheets”. In: Proceedings of the 12thInternational Conference on Computational Science and its Applications(ICCSA), Part IV. Ed. by Beniamino Murgante, Osvaldo Gervasi, Sanjay Misra, Nadia Nedjah, Ana Maria A. C. Rocha, David Taniar, andBernady O. Apduhan. Vol. 7336. LNCS. Springer, 2012, pp. 248–257. doi:10.1007/978-3-642-31128-4 18.[3] Amaia Aizpurua, Myriam Arrue, Markel Vigo, and Julio Abascal. “Exploring Automatic CSS Accessibility Evaluation”. In: Proceedings of the NinthInternational Conference on Web Engineering (ICWE). Ed. by MartinGaedke, Michael Grossniklaus, and Oscar Díaz. Vol. 5648. LNCS. Springer,2009, pp. 16–29. doi: 10.1007/978-3-642-02818-2 2.[4] Greg J. Badros, Alan Borning, Kim Marriott, and Peter J. Stuckey. “Constraint Cascading Style Sheets for the Web”. In: Proceedings of the 12th Annual ACM Symposium on User Interface Software and Technology (UIST).Ed. by Brad T. Vander Zanden and Joe Marks. ACM, 1999, pp. 73–82.doi: 10.1145/320719.322588.[5] Yung-Chen Chou and Hsin-Chi Liao. “A Webpage Data Hiding Methodby Using Tag and CSS Attribute Setting”. In: Proceedings of the TenthInternational Conference on Intelligent Information Hiding and Multimedia Signal Processing (IIH-MSP). Ed. by Junzo Watada, Akinori Ito,Jeng-Shyang Pan, Han-Chieh Chao, and Chien-Ming Chen. IEEE, 2014,pp. 122–125. doi: 10.1109/IIH-MSP.2014.37.[6] Da-Chun Wu and Hsiu-Yang Su. “Information Hiding in EPUB Files byRearranging the Contents of CSS Files”. In: Proceedings of the Ninth International Conference on Intelligent Information Hiding and MultimediaSignal Processing (IIH-MSP). Ed. by Kebin Jia, Jeng-Shyang Pan, YaoZhao, and Lakhmi C. Jain. IEEE, 2013, pp. 80–83. doi: 10.1109/IIHMSP.2013.29.

[7] Karl Gyllstrom, Carsten Eickhoff, Arjen P. de Vries, and Marie-FrancineMoens. “The Downside of Markup: Examining the Harmful Effects of CSSand Javascript on Indexing Today’s Web”. In: Proceedings of the 21stACM International Conference on Conference on Information and Knowledge Management (CIKM). ACM, 2012, pp. 1990–1994. doi: 10.1145/2396761.2398558.[8] Alessandro Cogliati, Mikko Pohja, and Petri Vuorimaa. “XHTML and CSSComponents in an XML Browser”. In: Proceedings of the InternationalConference on Internet Computing (IC), Volume 2. Ed. by Hamid R.Arabnia and Youngsong Mun. CSREA Press, 2003, pp. 563–572.[9] H.-S. Liang, K.-H. Kuo, P.-W. Lee, Y.-C. Chan, Y.-C. Lin, and M. Y. Chen.“SeeSS: Seeing What I Broke — Visualizing Change Impact of CascadingStyle Sheets”. In: Proceedings of the 26th annual ACM symposium on UserInterface Software and Technology (UIST). 2013, pp. 353–356.[10] Alessandro Cogliati and Petri Vuorimaa. “Optimized CSS Engine”. In:Proceedings of the Second International Conference on Web InformationSystems and Technologies: Internet Technology / Web Interface and Applications (WEBIST). Ed. by José A. Moinhos Cordeiro, Vitor Pedrosa,Bruno Encarnação, and Joaquim Filipe. INSTICC Press, 2006, pp. 206–213.[11] Martí Bosch, Pierre Genevès, and Nabil Layaïda. “Automated Refactoringfor Size Reduction of CSS Style Sheets”. In: ACM Symposium on DocumentEngineering (DocEng). ACM, 2014, pp. 13–16. doi: 10.1145/2644866.2644885.[12] Davood Mazinanian, Nikolaos Tsantalis, and Ali Mesbah. “DiscoveringRefactoring Opportunities in Cascading Style Sheets”. In: Proceedings ofthe 22nd Symposium on the Foundations of Software Engineering (FSE).ACM, 2014, pp. 496–506. doi: 10.1145/2635868.2635879.[13] Pierre Genevès, Nabil Layaïda, and Vincent Quint. “On the Analysis ofCascading Style Sheets”. In: Proceedings of the 21st World Wide Web Conference (WWW). Ed. by Alain Mille, Fabien L. Gandon, Jacques Misselis,Michael Rabinovich, and Steffen Staab. ACM, 2012, pp. 809–818. doi:10.1145/2187836.2187946.[14] Simon Harper, Sean Bechhofer, and Darren Lunn. “SADIe: Transcodingbased on CSS”. In: Proceedings of the Eighth International ACM SIGACCESS Conference on Computers and Accessibility (ASSETS). Ed. bySimeon Keates and Simon Harper. ACM, 2006, pp. 259–260. doi: 10 .1145/1168987.1169044.[15] Henrik Stormer. “Personalized Websites for Mobile Devices using DynamicCascading Style Sheets”. In: IJWIS 1.2 (2005), pp. 83–88. doi: 10.1108/17440080580000085.[16] Misko Hevery and Adam Abrons. “Declarative Web-Applications withoutServer: Demonstration of How a Fully Functional Web-Application CanBe Built in an Hour with only HTML, CSS & Javascript Library”. In:Companion to the 24th Annual ACM SIGPLAN Conference on Object-

[17][18][19][20][21][22][23][24]Oriented Programming, Systems, Languages, and Applications (OOPSLA).Ed. by Shail Arora and Gary T. Leavens. ACM, 2009, pp. 801–802. doi:10.1145/1639950.1640022.Kehinde Alabi. “Generation, Documentation and Presentation of Mathematical Equations and Symbolic Scientific Expressions Using Pure HTMLand CSS”. In: Proceedings of the 16th International Conference on WorldWide Web (WWW). Ed. by Carey L. Williamson, Mary Ellen Zurko, PeterF. Patel-Schneider, and Prashant J. Shenoy. ACM, 2007, pp. 1321–1322.doi: 10.1145/1242572.1242830.Lin-Shung Huang, Zack Weinberg, Chris Evans, and Collin Jackson. “Protecting Browsers from Cross-origin CSS Attacks”. In: Proceedings of the17th Conference on Computer and Communications Security (CCS). Ed.by Ehab Al-Shaer, Angelos D. Keromytis, and Vitaly Shmatikov. ACM,2010, pp. 619–629. doi: 10.1145/1866307.1866376.Richard Duchatsch Johansen, Talita Cristina Pagani Britto, and CesarAugusto Cusin. “CSS Browser Selector Plus: A JavaScript Library to Support Cross-browser Responsive Design”. In: Companion Volume of the 22ndInternational World Wide Web Conference (WWW). Ed. by Leslie Carr,Alberto H. F. Laender, Bernadette Farias Lóscio, Irwin King, Marcus Fontoura, Denny Vrandecic, Lora Aroyo, José Palazzo M. de Oliveira, Fernanda Lima, and Erik Wilde. ACM, 2013, pp. 27–30.Matthias Keller and Martin Nussbaumer. “Cascading Style Sheets: ANovel Approach Towards Productive Styling With Today’s Standards”.In: Proceedings of the 18th International Conference on World Wide Web(WWW). Ed. by Juan Quemada, Gonzalo León, Yoëlle S. Maarek, andWolfgang Nejdl. ACM, 2009, pp. 1161–1162. doi: 10 . 1145 / 1526709 .1526907.Matthias Keller and Martin Nussbaumer. “CSS Code Quality: A Metricfor Abstractness; Or Why Humans Beat Machines in CSS Coding”. In:Proceedings of the Seventh International Conference on the Quality of Information and Communications Technology (QUATIC). Ed. by FernandoBrito e Abreu, João Pascoal Faria, and Ricardo Jorge Machado. IEEEComputer Society, 2010, pp. 116–121. doi: 10.1109/QUATIC.2010.25.Robert Kotcher, Yutong Pei, Pranjal Jumde, and Collin Jackson. “Crossorigin Pixel Stealing: Timing Attacks Using CSS Filters”. In: Proceedingsof the SIGSAC Conference on Computer and Communications Security(CCS). Ed. by Ahmad-Reza Sadeghi, Virgil D. Gligor, and Moti Yung.ACM, 2013, pp. 1055–1062. doi: 10.1145/2508859.2516712.Jakub Marszalkowski, Jan Mizgajski, Dariusz Mokwa, and Maciej Drozdowski. “Analysis and Solution of CSS-Sprite Packing Problem”. In: ACMTransactions on the Web 10.1 (2016), p. 1. doi: 10.1145/2818377.Davood Mazinanian and Nikolaos Tsantalis. “An Empirical Study on theUse of CSS Preprocessors”. In: Proceedings of the 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[25][26][27][28][29][30][31][32][33][34]IEEE Computer Society, 2016, pp. 168–178. doi: 10.1109/SANER.2016.18.Matthew Hague, Anthony Widjaja Lin, and C.-H. Luke Ong. “Detecting Redundant CSS Rules in HTML5 Applications: a Tree Rewriting Approach”. In: Proceedings of the 30th Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA). ACM, 2015,pp. 1–19. doi: 10.1145/2814270.2814288.Ali Mesbah and Shabnam Mirshokraie. “Automated Analysis of CSS Rulesto Support Style Maintenance”. In: Proceedings of the 34th InternationalConference on Software Engineering (ICSE). Ed. by Martin Glinz, Gail C.Murphy, and Mauro Pezzè. IEEE, 2012, pp. 408–418. isbn: 978-1-46731067-3. doi: 10.1109/ICSE.2012.6227174.Thomas H. Park, Brian Dorn, and Andrea Forte. “An Analysis of HTMLand CSS Syntax Errors in a Web Development Course”. In: ACM Transactions on Computing Education (TOCE) 15.1 (2015), p. 4. doi: 10.1145/2700514.Thomas H. Park, Ankur Saxena, Swathi Jagannath, Susan Wiedenbeck,and Andrea Forte. “Towards a Taxonomy of Errors in HTML and CSS”.In: Proceedings of the Ninth International Computing Education ResearchConference (ICER). Ed. by Beth Simon, Alison Clear, and Quintin I.Cutts. ACM, 2013, pp. 75–82. doi: 10.1145/2493394.2493405.Mikko Pohja and Petri Vuorimaa. “CSS Layout Engine for CompoundDocuments”. In: Proceedings of the Third Latin American Web Congress(LA-Web). IEEE Computer Society, 2005, pp. 148–156. doi: 10.1109/LAWEB.2005.13.Manuel Serrano. “HSS: a Compiler for Cascading Style Sheets”. In: Proceedings of the 12th International Conference on Principles and Practice of Declarative Programming (PPP). ACM, 2010, pp. 109–118. doi:10.1145/1836089.1836103.Adrian Sampson, Calin Cascaval, Luis Ceze, Pablo Montesinos, and DaríoSuárez Gracia. “Automatic Discovery of Performance and Energy Pitfalls in HTML and CSS”. In: Proceedings of the International Symposiumon Workload Characterization (IISWC). IEEE Computer Society, 2012,pp. 82–83. doi: 10.1109/IISWC.2012.6402904.M. Serdar Biçer and Banu Diri. “Defect Prediction for Cascading StyleSheets”. In: Applied Soft Computing (2016). In press, corrected proof, available online 30 May 2016. issn: 1568-4946. doi: 10.1016/j.asoc.2016.05.038.Dave Shea. “CSS Zen Garden”. In: Proceedings of the 31st InternationalConference on Computer Graphics and Interactive Techniques (SIGGRAPH), Web Graphics. Ed. by Simon Allardice. ACM, 2004, p. 18. doi:10.1145/1186194.1186219.Håkon Wium Lie and Janne Saarela. “Multipurpose Web Publishing UsingHTML, XML, and CSS”. In: Communications of the ACM 42.10 (1999),pp. 95–101. doi: 10.1145/317665.317681.

[35][36][37][38][39][40][41]Jukka K. Korpela. “Lurching Toward Babel: HTML, CSS, and XML”. In:IEEE Computer 31.7 (1998), pp. 103–104. doi: 10.1109/2.689682.Stuart Culshaw, Michael Leventhal, and Murray Maloney. “XML andCSS”. In: World Wide Web Journal 2.4 (1997), pp. 109–118. url: http://www.xml.com/pub/a/w3j/s3.leventhal.html.Jan Sutter, Kristian Sons, and Philipp Slusallek. “A CSS Integration Modelfor Declarative 3D”. In: Proceedings of the 20th International Conferenceon 3D Web Technology (Web3D). Ed. by Jinyuan Jia, Felix G. Hamza-Lup,and Tobias Schreck. ACM, 2015, pp. 209–217. doi: 10.1145/2775292.2775295.Alejandro Montes García, Paul De Bra, George H. L. Fletcher, and MykolaPechenizkiy. “A DSL Based on CSS for Hypertext Adaptation”. In: Proceedings of the 25th Conference on Hypertext and Social Media (HT). Ed.by Leo Ferres, Gustavo Rossi, Virgilio Almeida, and Eelco Herder. ACM,2014, pp. 313–315. doi: 10.1145/2631775.2631782.Hafez Rouzati, Luis Cruiz, and Blair MacIntyre. “Unified WebGL/CSSScene-graph and Application to AR”. In: Proceedings of the 18th International Conference on Web3D Technology. Ed. by Jorge Posada, Donald P.Brutzman, Denis Gracanin, Byounghyun Yoo, and David Oyarzun. ACM,2013, p. 210. doi: 10.1145/2466533.2466568.Naoki Takei, Takamichi Saito, Ko Takasu, and Tomotaka Yamada. “WebBrowser Fingerprinting Using Only Cascading Style Sheets”. In: Proceedings of the 10th International Conference on Broadband and WirelessComputing, Communication and Applications (BWCCA). Ed. by LeonardBarolli, Fatos Xhafa, Marek R. Ogiela, and Lidia Ogiela. IEEE ComputerSociety, 2015, pp. 57–63. doi: 10.1109/BWCCA.2015.105.Jesia Zakraoui and Wolfgang L. Zagler. “A Method for Generating CSSto Improve Web Accessibility for Old Users”. In: Proceedings of the 13thInternational Conference on Computers Helping People with Special Needs(ICCHP), Part I. Ed. by Klaus Miesenberger, Arthur I. Karshmer, PetrPenáz, and Wolfgang L. Zagler. Vol. 7382. LNCS. Springer, 2012, pp. 329–336. doi: 10.1007/978-3-642-31522-0 50.

Appendix D. Abstract Object-oriented SyntaxThis appendix describes the abstract syntax of the designed domain-specificlanguage. An overview of the abstract syntax will be followed by detailed viewsof each of the subclasses.ConventionSet represents a style guide. It comprises a number of conventionsthat form coherent guidelines. Attribute contexts is a list of Contexts thatcontains contexts.Context represents a group of conventions that belong to the same semanticgroup (e.g. whitespacing, syntax preference, programming style). Attributeconventions is a list of Conventions that contains conventions. Attributeignored patterns is a list of Patterns that are ignored while searching forthe target pattern. For example, while searching for violations of semanticconventions, the whitespacing and indentation nodes are ignored.Convention represents a rule that enforces specific constraints. Attribute pattern is the pattern that the convention targets. Attribute description is thedescription of the convention in natural text. This description is displayedto the user when a violation of the convention is discovered.PatternDescriptor represents a description of a node or a combination ofrelated nodes that a given convention constraints. Attribute root is the topnode described in the pattern. Attribute nodes is a collection of all nodesdescribed by the pattern. Attribute relations is a collection of relationshipsbetween the nodes used in the pattern.NodeRelation represents a relation between two Nodes. Attribute target node designates a description of the Node targeted by the relation.NodeDescriptor is an abstract class that contains a description of a CssNode. Attribute constraint is an expression that designates the constraintsapplied to the node.Node represents a description of a node used in a PatternDescriptor. Attributeconstraint is an expression that designates constraints applied to the node.

Attribute identifier is a given string that can be used as a reference to thematched node.WhitespaceNode represents a description of a whitespace node that references space, newline, indentation symbols. Attribute constraint is an expression that designates constraints applied to the node. Attribute repeateris an optional constraint that specifies the number of times a whitespacenode can appear consecutively. Repeaters are useful to express conventionsthat do not specify exact quantities of whitespace symbols. For example, theconvention “put at least one blank line between rules” sets a lower limit ofthe number of blank lines, but not an upper limit.Now a detailed view of the expressions in the abstract syntax of CssCoco willbe followed by a description of the subclasses of Expression:LiteralExpr represents an expression containing a literal value. Attributevalue is the value of the literal expression.VariableExpr represents a reference to a matched node. Attribute name is theidentifier used to reference the node.UnaryExpr represents expressions with a single operand. Attribute operandis operand of the expression.

NotExpr represents negation expression.UnaryMinusExpr represents unary minus expression.UnaryPlusExpr represents unary plus expression.BinaryExpr represents expressions with two operands. Attributes left andright represent the first and second operands, respectively.OrExpr represents disjunction expression.AndExpr represents conjunction expression.ComparisonExpr represents expression that compares two operands.IsExpr represents expression that checks whether the first operand is of thegiven type, specified by the second operand.InExpr represents expression that checks whether the first operand is presentin a list of values, specified by the second operand.MatchExpr represents expression that checks whether the first operandmatches a regular expression, specified by the second operand.CallExpr represents expression that invokes a API property or method of theoperand. Attribute operand is the operand of the expression. Attribute valueis the name of the API property or method that is invoked.NodeQueryExpr represents expression that queries node context. Attributeoperand is the node used as a reference point for the query.The next diagram presents a detailed view of the literal expressions used inthe abstract syntax of CssCoco, followed by a listing of the classes.IntegerExpr represents expression containing an integer value.DecimalExpr represents expression containing a decimal value.StringExpr represents expression containing a string value.BooleanExpr represents expression containing a boolean value.NodeTypeExpr represents expression containing a string value that describesa node type.ListExpr represents expression containing a list value. The elements of the listare of type LiteralExpr.In the same way we present the call expressions used in the abstract syntaxof CssCoco, followed by a listing of the classes.

PropertyExpr represents an expression that returns the value of a propertyof the operand node. Attribute operand represents the node targeted by theexpression. Attribute value holds the name of the property that is accessed.MethodExpr represents an expression that invokes a method of the operandnode. Attribute argument represents the argument passed to the invokedmethod.Lastly, node query expressions:NextSiblingExpr represents expression that returns the following sibling ofthe operand node.PreviousSiblingExpr represents expression that returns the previous siblingof the operand node.NodeQueryWithArgExpr represents expression that queries node contextand uses additional constraints for the query. Attribute argument representsthe additional constraints used by the query.

ContainsExpr represents an expression that checks whether the operand nodecontains a node that matches given constraints.ContainsAllExpr represents an expression that checks whether the operandnode contains nodes that match given constraints.CountExpr represents an expression that counts the number of ancestor nodesof the operand that match a given constraint.BeforeExpr represents an expression that checks whether a given pattern ofnodes appears before the operand node.AfterExpr represents an expression that checks whether a given pattern ofnodes appears after the operand node.BetweenExpr represents an expression that checks whether a given patternof nodes appears between the two operand nodes.

Appendix E. Concrete Textual SyntaxThis appendix contains the concrete syntax of the designed DSL. Below arepresented the grammar rules accompanied by the mapping to the abstract syntaxof the language.stylesheet represents a style guide.Abstract Syntax Mapping: ast.ConventionSet.stylesheet : context* ;context represents a group of logically related conventions. A single styleguide can comprise a number of conventions that enforce various constraints,e.g. whitespacing, syntax preference, program style. Contexts group conventionsthat ignore the same nodes while searching for their violations.Abstract Syntax Mapping: ast.Context.context : Identifier ignore clause? '{' convention* '}' ;ignore clause : 'ignore' node descriptor (',' node descriptor )* ;convention represents a single rule in the style guide. Conventions are typicallyexpressed by directly stating what is disallowed or describing a condition that ifmet, requires additional constraints. The former way of expressing conventions isrepresented by the forbid conventions. The latter approach uses the structurefind . require . To break down complex disallowing conventions, thestructure find . forbid . has been introduced. This aims at improvingreadability of conventions. Additionally, conventions have a where clause whichapplies constraints for matching nodes. It is used to expression matching constraints that span over multiple nodes and therefore cannot be present in thenode descriptors.Abstract Syntax Mapping: ast.Convention.convention : 'forbid' pattern ('where' logic expr)? 'message' String 'find' pattern ('where' logic expr)?('require' 'forbid') logic expr 'message' String;pattern represents a pattern of nodes and their relations. For example, it candescribe a horizontal sequence of sibling nodes, a vertical pattern of nested nodes,or pairs of elements with a common parent.Abstract Syntax Mapping: ast.PatternDescriptor.pattern : node declaration (('in' 'next-to') node declaration)* fork ('in' node declaration)*;fork : '(' node declaration (',' node declaration) ')' ;node declaration : (Identifier ' ')? semantic node ;node descriptor represents a description of a node. It specifies the type ofthe node and its additional constraints.Abstract Syntax Mapping: ast.NodeDescriptor.

node descriptor :'unique'? node type ('{' (logic expr repeater) '}')? ;repeater : Integer ',' Integer? (',')? Integer ;logic expr represents expressions that perform logic operations and gluearithmetic and type expressions.Abstract Syntax Mapping: ast.NotExpr, ast.AndExpr, ast.OrExpr andall arithmetic expression and type expression mappings.logic expr : ;'(' logic expr ')''not' logic exprlogic expr 'and' logic exprlogic expr 'or' logic exprtype exprarithmetic exprtype expr represents expressions that ensure node type and perform nodequeries on nodes. They are located in a separate parser rule because they interpret Identifiers as node type expressions instead of a API calls.Abstract Syntax Mapping: ast.IsExpr, ast.BeforeExpr, ast.AfterExpr,ast.BetweenExpr.type expr : arithmetic expr operator 'is' Identifier node descriptor ('before' 'after') type operand node descriptor 'between' type operand 'and' type operand;type operand : Identifier semantic node ;arithmetic expr represents arithmetic, comparison, set membership and regexexpressions. These are located in a separate parser rule because they interpretidentifiers as API calls instead of node type expressions.AbstractSyntaxMapping:ast.UnaryMinus, ast.UnaryPlus,ast.LessThan, ast.LessThanOrEq, ast.GreaterThan, ast.GreaterThanOrEq,ast.Equal, ast.NotEqual, ast.InExpr, ast.MatchExpr, ast.LiteralExpr.arithmetic expr : ('-' ' ') arithmetic expr arithmetic expr (' ' ' ' ' ' ' ' ' ' '! ')arithmetic expr arithmetic expr ('in' 'not in' 'match' 'not match')arithmetic expr call expression element;element : Boolean Decimal Integer String list ;call expression represents an API call expression and also node query expression.Abstract Syntax Mapping: ast.CallExpr and ast.NodeQueryExpr.call expression : call expression '.' call expression Identifier ('(' (element semantic node ) ')')?;

Boolean: represents Boolean literal expression.Abstract Syntax Mapping: ast.BooleanExpr.Boolean : 'true' 'True' 'false' 'False' ;String: represents String literal expression.Abstract Syntax Mapping: ast.StringExpr.String : "'" (EscapeSequence ['])*? "'" ;EscapeSequence : "\\" "'" ;Integer: represents Integer literal expression.Abstract Syntax Mapping: ast.IntegerExpr.Integer : (ZeroDigit NonZeroDigit Digit*) ;Digit : ZeroDigit NonZeroDigit ;NonZeroDigit : [1-9] ;ZeroDigit : [0] ;Decimal: represents Decimal literal expression.Abstract Syntax Mapping: ast.DecimalExpr.Decimal : ( NonZeroDigit Digit* ZeroDigit? ) '.' Digit ;Digit : ZeroDigit NonZeroDigit ;NonZeroDigit : [1-9] ;ZeroDigit : [0] ;list and list element represent the List literal expression.Abstract Syntax Mapping: ast.ListExpr.list : '[' list element (',' list element)* ']' ;list element : Integer Decimal String semantic node ;Letter : [a-zA-Z] ;Identifier : (Letter)(Letter Digit ' ' '-')* ;type expression represents the NodeType literal expression.Abstract Syntax Mapping: ast.NodeType.node type : ;'(' node type ')''not' node typenode type 'and' node typenode type 'or' node typeIdentifier

Appendix F. CssCoco Plugin– http://github.com/boryanagoncharenko/CssCoco– co– https://pypi.python.org/pypi?:action display&name csscoco

Appendix G. CSS Convention Examples CatalogueLayout and commentsAdd /* LTR */ to each use of left or right [42]X float: right; /* LTR */ float: right;Add /* LTR */ to each use of directio

70 C/C link to softwareprojects.com 71 PHP link to softwareprojects.com 72 PHP link to exakat.io 73 Java link to apache.org 74 C/C link to software-dl.ti.com data link to help.pointforce.com general link to drdobbs.com 75 PHP link to osticket.com 76 PHP link to slideshare.net 77 C/C link to geeks3d.com duplicate link to cern.ch